21xrx.com
2024-11-22 12:41:37 Friday
登录
文章检索 我的文章 写文章
Java的三种技术架构:MVC、MVP和MVVM
2023-06-15 14:56:52 深夜i     --     --
MVC 分层思想 设计模式

Java作为一种广泛使用的编程语言,拥有多种技术架构可供选择。在本文中,我们将介绍Java的三种常见技术架构:MVC、MVP和MVVM,并且提供代码案例以帮助读者更好地理解和应用这些技术架构。

一、MVC技术架构

MVC是Model-View-Controller的简称,是一种分层思想的设计模式。它将系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

其中,模型层负责业务数据的封装和处理;视图层负责展示数据和用户交互;控制器层则协调模型层和视图层的交互,以及处理业务逻辑。

以下是MVC的示意图:

![MVC架构图](https://cdn.jsdelivr.net/npm/almx-img-bucket/img/20220106171328.jpg)

代码案例:


//Model

public class User

  private String name;

  private int age;

  //省略getter和setter方法

//View

public interface IUserView {

  void showUserInfo(User user);

}

//Controller

public class UserController {

  private User mUser;

  private IUserView mView;

  public UserController(IUserView view) {

    mView = view;

    mUser = new User();

  }

  public void setUserName(String name) {

    mUser.setName(name);

    mView.showUserInfo(mUser);

  }

  public void setUserAge(int age) {

    mUser.setAge(age);

    mView.showUserInfo(mUser);

  }

}

二、MVP技术架构

MVP是Model-View-Presenter的缩写,是在MVC基础上进行了改进的技术架构。MVP将Controller改为了Presenter,主要区别在于它强制要求View和Model之间不能有任何交互,而是通过Presenter进行通信。

以下是MVP的示意图:

![MVP架构图](https://cdn.jsdelivr.net/npm/almx-img-bucket/img/20220106171329.jpg)

代码案例:


//Model

public class User

  private String name;

  private int age;

  //省略getter和setter方法

//View

public interface IUserView {

  void showUserInfo(User user);

}

//Presenter

public class UserPresenter {

  private User mUser;

  private IUserView mView;

  public UserPresenter(IUserView view) {

    mView = view;

    mUser = new User();

  }

  public void setUserName(String name) {

    mUser.setName(name);

    mView.showUserInfo(mUser);

  }

  public void setUserAge(int age) {

    mUser.setAge(age);

    mView.showUserInfo(mUser);

  }

}

关键词:MVP、Presenter、通信

三、MVVM技术架构

MVVM是Model-View-ViewModel缩写,是一种基于数据绑定的体系结构。它促使界面和业务逻辑的分离,通过数据绑定实现View和ViewModel的协作。ViewModel根据业务逻辑构建属于自己的数据模型,并且触发View层中的相应模块来按需更新页面。

以下是MVVM的示意图:

![MVVM架构图](https://cdn.jsdelivr.net/npm/almx-img-bucket/img/20220106171329.jpg)

代码案例:


//Model

public class User

  private String name;

  private int age;

  //省略getter和setter方法

//View

public class UserActivity extends AppCompatActivity {

  private ActivityUserBinding mBinding;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mBinding = DataBindingUtil.setContentView(this, R.layout.activity_user);

    UserViewModel viewModel = new UserViewModel();

    mBinding.setViewModel(viewModel);

  }

}

//ViewModel

public class UserViewModel extends BaseObservable {

  private User mUser;

  private String mName;

  private int mAge;

  public UserViewModel() {

    mUser = new User();

  }

  @Bindable

  public String getName()

    return mName;

  

  public void setName(String name) {

    mName = name;

    mUser.setName(name);

    notifyPropertyChanged(BR.name);

  }

  @Bindable

  public int getAge()

    return mAge;

  

  public void setAge(int age) {

    mAge = age;

    mUser.setAge(age);

    notifyPropertyChanged(BR.age);

  }

}

关键词:MVVM、数据绑定、业务逻辑

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复