MVC是模型(Model),视图(View)和控制(Controller)的缩写。MVC(Model-View-Controller)是一种软件体系结构模式,被广泛应用于构建各种类型的应用程序,包括Web应用程序、桌面应用程序和移动应用程序等。MVC的设计理念是将应用程序的各个组成部分分离,使其更易于维护和扩展。
Model(模型)表示应用程序核心功能与数据(比如数据库记录列表)。
View(视图)负责为用户显示信息(数据库记录)。一个模型可能拥有多个视图。
Controller(控制器)处理输入(写入数据库记录)。
模型的责任
从数据库取出数据,并且赋予数据变量
负责业务逻辑实现
负责数据验证,然后将数据存入数据库
视图的责任
获取用户输入
向controller发送处理请求
接收来自Controller的反馈并将model的处理结果显示给用户
控制器的责任
接收来自客户的请求
调用model业务逻辑方法
调用View显示执行结果

对于数据更新,MVC采用改变-传播机制(change-propagation)
如果用户通过一个view的controller改变了model,所有的view必须反映出该改变。当数据发生变化的时候,model通知所有的view,告诉他们数据已经改变了;
Views可以遍历model中的数据,以便发现到底是什么改变了。然后更新显示数据。

使用观察者模式的MVC架构类图
使用MVC架构:
1)容易增加或者改变视图。
事务逻辑被封装在Model中,所以在新增加一个视图的时候,不必要改动模型,而是因为业务逻辑都是一样的,所以只需要新增加一个视图类即可。
2) 容易独立地更新每个独立的软件模块
由于一个应用被分离为三个软件模块,因此,我们可以独立地改变其中的一个模块,而不影响其它两个模块。例如,一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
3) 代码易开发易维护
4) 业务逻辑更易测试
-不适合小型,中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失;
-对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率;
-视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用;
-依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

