您的位置:首页 > 房产 > 建筑 > 中信建设有限责任公司云南分公司电话_工程公司简介范文_网站移动端优化工具_今日国际军事新闻最新消息

中信建设有限责任公司云南分公司电话_工程公司简介范文_网站移动端优化工具_今日国际军事新闻最新消息

2025/2/26 6:54:36 来源:https://blog.csdn.net/m0_56366502/article/details/145852280  浏览:    关键词:中信建设有限责任公司云南分公司电话_工程公司简介范文_网站移动端优化工具_今日国际军事新闻最新消息
中信建设有限责任公司云南分公司电话_工程公司简介范文_网站移动端优化工具_今日国际军事新闻最新消息

MVC:

M表示数据,V表示UI,C用于协调Model和View之间的交互

实例代码

Model

public class UserModel {private String username;private String email;public UserModel(String username, String email) {this.username = username;this.email = email;}public String getUsername() {return username;}public String getEmail() {return email;}
}

View:

public class UserView {public void displayUserInfo(String username, String email) {System.out.println("User Info: " + username + ", " + email);}
}

Controller:

public class UserController {private UserModel model;private UserView view;public UserController(UserModel model, UserView view) {this.model = model;this.view = view;}public void updateView() {view.displayUserInfo(model.getUsername(), model.getEmail());}
}

MainActivity中:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);UserModel userModel = new UserModel("JohnDoe", "john@example.com");UserView userView = new UserView();UserController userController = new UserController(userModel, userView);// Display user infouserController.updateView();}
}

MVP :用Presenter 替代了 Controller,它充当了视图和模型之间的中介,负责业务逻辑。

Model:

public class UserModel {private String username;private String email;public UserModel(String username, String email) {this.username = username;this.email = email;}public String getUsername() {return username;}public String getEmail() {return email;}
}

View:

public interface UserView {void displayUserInfo(String username, String email);
}

Presenter:

public class UserPresenter {private UserModel model;private UserView view;public UserPresenter(UserModel model, UserView view) {this.model = model;this.view = view;}public void updateView() {view.displayUserInfo(model.getUsername(), model.getEmail());}
}

MainActivity:

public class MainActivity extends AppCompatActivity implements UserView {private UserPresenter presenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);UserModel userModel = new UserModel("JohnDoe", "john@example.com");presenter = new UserPresenter(userModel, this);// Display user info via presenterpresenter.updateView();}@Overridepublic void displayUserInfo(String username, String email) {System.out.println("User Info: " + username + ", " + email);}
}

MVVM :ViewModel是负责从model获取数据并且将其准备好供View使用的类,View和View之间通过数据绑定进行交互

Model:

public class UserModel {private String username;private String email;public UserModel(String username, String email) {this.username = username;this.email = email;}public String getUsername() {return username;}public String getEmail() {return email;}
}

ViewModel:

public class UserViewModel extends ViewModel {private MutableLiveData<UserModel> userLiveData;public UserViewModel() {userLiveData = new MutableLiveData<>();}public LiveData<UserModel> getUserLiveData() {return userLiveData;}public void fetchUserData() {// Mock dataUserModel userModel = new UserModel("JohnDoe", "john@example.com");userLiveData.setValue(userModel);}
}

MainActivity:

public class MainActivity extends AppCompatActivity {private UserViewModel userViewModel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);userViewModel = new ViewModelProvider(this).get(UserViewModel.class);userViewModel.getUserLiveData().observe(this, userModel -> {// Update UI with user dataSystem.out.println("User Info: " + userModel.getUsername() + ", " + userModel.getEmail());});userViewModel.fetchUserData();}
}

关键区别:

  1. MVC

    • Controller 处理 UI 逻辑和业务逻辑,ViewController 紧密耦合。
    • 通常不适用于 Android,因为 Android 中的 Activity/Fragment 既是 View 又是 Controller,可能导致过多的职责。
  2. MVP

    • Presenter 负责所有的逻辑,而 View 只负责显示内容。
    • 比较适合 Android,因为可以通过接口实现松耦合,测试也更容易。
  3. MVVM

    • 使用 LiveDataViewModel 进行数据绑定,使得 UI 更新与数据的变化解耦。
    • 非常适合使用 Jetpack 组件的 Android 应用,特别是当使用 DataBinding 时。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com