MVC思想详解

发布时间:2023-05-21

一、什么是MVC

MVC是Model-View-Controller的缩写,它是一种软件开发中的架构模式,将软件应用分成三个核心部分:模型、视图和控制器 模型:负责应用的数据和行为; 视图:负责应用的外观展示; 控制器:负责视图和模型之间的通信。

二、MVC的优点

1、分离关注点(MSR) 通过MVC,应用程序的各个部分被分离,分为模型、控制器和视图,并且每个部分都有自己的关注点,这样就能合理的组织整个应用程序。 2、可重用性和可维护性 MVC使得应用程序的代码实现高度模块化,每个模块都能够独立实现自己的功能,这样就提高了代码的重用性和可维护性。 3、可扩展性 基于MVC的应用程序具有良好的扩展性,可以根据具体的需要添加新的模块而不会影响现有的模块。

三、MVC的实现

1、模型(Model)

模型是应用程序的核心,负责处理数据和行为,对数据进行增、删、改、查等操作,同时根据应用程序的需要生成各种业务逻辑。

完整代码示例:

public class User {
    private String name;
    private Integer age;
    //getters and setters
}
public interface UserDao {
    User getById(Long id);
}
public class UserDaoImpl implements UserDao {
    @Override
    public User getById(Long id) {
        return new User("Tom", 18);
    }
}

2、视图(View)

视图是应用程序的外观展示部分,负责将模型的数据展示出来,使用户能够直观地看到应用程序的用户界面。

完整代码示例:

public class UserView {
    public void show(User user) {
        System.out.println("Name:" + user.getName() + ",Age:" + user.getAge());
    }
}

3、控制器(Controller)

控制器是应用程序的核心,负责将模型的数据传送给视图,同时也负责接收用户的输入和响应用户的操作。

完整代码示例:

public class UserController {
    private final UserDao userDao;
    private final UserView userView;
    public UserController(UserDao userDao, UserView userView) {
        this.userDao = userDao;
        this.userView = userView;
    }
    public void showUserInfo(Long id){
        User user = userDao.getById(id);
        userView.show(user);
    }
}

四、MVC常见模式

MVC1

MVC1是最早的MVC模式,其中控制器和视图是耦合的,当用户请求到达控制器时,它会直接调用相应的视图,并将模型数据传给视图,然后视图负责展示相应的数据。

完整代码示例:

public class UserController {
    public void showUserInfo(Long id){
        User user = userDao.getById(id);
        UserView userView = new UserView();
        userView.show(user);
    }
}

MVC2

MVC2从MVC1中分离出控制器和视图的关系,使得控制器的作用更加强大,它不仅统一接受用户请求,同时负责调度模型和视图的关系,将模型的数据传送给视图进行渲染。

完整代码示例:

public class UserController {
    private final UserDao userDao;
    private final UserView userView;
    public UserController(UserDao userDao, UserView userView) {
        this.userDao = userDao;
        this.userView = userView;
    }
    public void showUserInfo(Long id){
        User user = userDao.getById(id);
        userView.show(user);
    }
}

五、总结

本文详细介绍了MVC架构模式,并从多个方面进行了阐述,包括了MVC的简介、优点、实现和常见模式等内容。希望通过本文的介绍,能够更加清晰地理解MVC的思想,并能够在实际的开发中合理运用。