MVC
下面的示例存在问题,view的更新和model操作都在controller层。但是实际上的mvc并不是这样的。实际工作过程:
view接受io事件,然后io事件传递给controller层。controller层更新model数据,然后view监听model数据,从而更新视图。所以view和model是耦合的没有完全解耦。而下面的例子更相当于mvp模式。通过主持人层来控制和moedl和view,所有操作都在主持人层。做到了完全解耦。
文档
MVC(Model-View-Controller)模式属于行为型模式,虽然它本身不完全是经典的设计模式中的一种,但它主要处理对象和类之间的职责分配和交互方式,因此归类为行为型模式更为恰当。
MVC 模式简介
Model(模型):代表应用程序的数据和业务逻辑。模型直接管理数据、逻辑和规则。View(视图):显示数据的可视化部分。视图从模型中获取数据并显示,但不处理数据的逻辑。Controller(控制器):接受用户输入并调用模型和视图完成用户的需求。控制器通过更新模型来影响视图。
行为型模式
行为型模式关注对象和类之间的职责分配和通信方式,包括算法、职责链、命令、迭代器、中介者、备忘录、观察者、状态、策略、模板方法和访问者等模式。行为型模式的主要目标是简化对象之间的通信和控制流程,促进系统内的对象协作。
MVC 示例
以下是一个简单的 MVC 示例,展示了如何实现一个用户登录功能。
// User.java
public class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
// Getters and setters
}
// LoginView.java
public class LoginView {
public void printUserDetails(String username, String password){
System.out.println("User: ");
System.out.println("Username: " + username);
System.out.println("Password: " + password);
}
}
// UserController.java
public class UserController {
private User model;
private LoginView view;
public UserController(User model, LoginView view){
this.model = model;
this.view = view;
}
public void setUserName(String username){
model.setUsername(username);
}
public String getUserName(){
return model.getUsername();
}
public void setUserPassword(String password){
model.setPassword(password);
}
public String getUserPassword(){
return model.getPassword();
}
public void updateView(){
view.printUserDetails(model.getUsername(), model.getPassword());
}
}