4
回答
红薯大哥聚会提到的 MVA
华为云4核8G,高性能云服务器,免费试用   

 OSChina 首次聚会上  红薯大哥 提到了他开发 OSChina的 模式

 当时有人提到是 MVP模式。

 小弟不是很懂,就查找了下。

 特将查找的资料分享下:

    (还有一英文文档上传 :      mvp模式.pdf)

MVC模式   &&    MVP模式

MVC模式

模型-视图-控制器(Model-View-Controller,MVC) MVC模式的目的就是实现Web系统的职能分工。模式就是为那些需要为同样的数据提供多个视图的应用程序而设计的。它很好地实现了数据层与表示层的分离,特别适用于开发与用户图形界面有关的应用程序,模式中基本结构定义为:

控制器(Controller) 用来处理用户命令以及程序事件的,是model与view之间沟通的桥梁,分派用户请求并选择合适的视图用于显示,可将视图层的数据(解释用户输入)映射为模型层可执行操作,通常用servlet、struts实现;
模型(model) 维护数据并提供数据访问方法,通常用JavaBean实现(模型对象Model Objects);
视图(view) 数据的显示与用户交互,通常使用jsp或html实现。
MVC模式基本实现过程为:
1. 控制器(如Java中的main程序入口)要新建模型;
2. 控制器要新建一个或多个视图对象,并将它们与模型相关联;
3. 控制器改变模型的状态;
4. 当模型的状态改变时,模型将会自动刷新与之相关的视图。


 MVC设计模式的扩展
通过在ASP NET中的MVC架构编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:

    ①实现一个模型的多个视图;
    ②采用多个控制器;
    ③当模型改变时,所有视图将自动刷新;
    ④所有的控制器将相互独立工作。
       这就是MVC架构的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图如图2所示。 同样也可以实现其它形式的MVC例如:一个模型、两个视图和两个控制器。从上面可以看出,通过MVC架构实现的应用程序具有极其良好的可扩展性。

 

 MVP模式

Controller->Presenter负责逻辑的处理,
Model提供数据,
View负责显示。
      作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。
      在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。


MVP的优点
1、模型与视图完全分离,我们可以修改视图而不影响模型
       2、可以更高效地使用模型,因为所以的交互都发生在一个地方——Presenter内部
       3、我们可以将一个Presener用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
       4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)

举报
Allen_My
发帖于7年前 4回/726阅
顶部