美文网首页
MVC/MVP/MVVM浅析

MVC/MVP/MVVM浅析

作者: 卜卜Bruce | 来源:发表于2018-03-31 22:30 被阅读0次

    MVC

    Model-View-Controller (MVC) 体系结构模式将应用程序分成 3 个主要组件组:模型、视图和控制器。

    Model: 不依赖用户界面,直接管理数据,逻辑和应用的规则。管理应用的数据,从controller接收用户的输入。
    View:一切信息的输出显示都能被称为View,比如图表;同一信息可能有多个Views,比如表格等。以特定的形式显示Model。
    Controller:接收输入并且转换为命令给model或者view。响应用户的输入,传递给Model。

    Diagram of interactions within the MVC pattern 模块之间的依赖关系如下图所示,即Model是完全独立于View和Controller的 mvc.png

    但是在android里,用户的控制事件(如点击,滑动等)是在View中的,所以android中MVC如下图所示:


    android mvc.png

    基本的结构是activity/fragment持有Model和Controller的实例,并且注册回调到Model层用来更新View;Controller的实例持有Model的实例用来传递用户请求。

    优点:

    1. 同步开发,多个程序员可以同时开发View/Model/Controller。
    2. 高内聚,所有逻辑相关的都放在Controller里面,特定模块的Views也都在一起。
    3. 低耦合,MVC本质上就是为了分开View、Model、Controller。
    4. 易于修改,因为各层的职责独立,所以易于扩展和修改。
    5. 一个Model可以有多个View。

    缺点:

    1. 代码导航性复杂,因为引入了新的抽象层,要求使用者能使用MVC的分解标准。

    MVP

    Model-View-Presenter 是从MVC衍生出来的。在MVP中,presenter的作为一个“中间人”,所有的显示逻辑都放在presenter中。
    MVP更好的帮助单元测试,并且促进了现实逻辑的关键点分离。


    Model_View_Presenter_GUI_Design_Pattern

    Model:会被显示在界面上的数据。
    View:被动的界面,来显示数据(medel)并且分发用户操作给presenter来处理数据。
    Presenter: 处理Model 和View,从Model获取数据,在View中显示。

    android_mvp.png

    MVVM

    Model-View-ViewModel
    Model:数据访问层
    View:如同MVC MVP一样,显示界面
    ViewModel:暴露View的一些属性和行为的抽象,用来代替Controller和Presenter。在ViewModel中建立View和Model中数据的绑定。
    Binder:隐式存在于MVVM模式中,让View和数据更好的的同步,简化了繁琐的代码。

    MVVMPattern

    相关文章

      网友评论

          本文标题:MVC/MVP/MVVM浅析

          本文链接:https://www.haomeiwen.com/subject/ykagcftx.html