zoukankan      html  css  js  c++  java
  • mvc架构和mvp架构

    mvc,mvp其实是复合模式,是多个设计模式的组合:将多个模式结合起来形成一个框架,已解决一般性问题。

    mvc:

    既然mvc是复合模式,那么是由哪些设计模式组合的呢?

    1. 观察者设计模式:view和controller都是model的观察者(model的状态更新及时通知view更新,或者通知c做相应逻辑处理);
    2. 策略模式:controller是view的策略,所以view包含的控制逻辑就是选择策略,也就是选择控制器controller.
    3. 组合模式:view的自身实现应用了组合模式。

    耦合性比较高,view model controller都可以相互访问。

    model view controller 模式 视图 控制器。

    在android中

    1. view 对应于 视图布局xml文件;
    2. model 对应于数据文件或者网络获取的数据体,业务逻辑,数据处理;
    3. controller 对应activity,fragment。

    activity(controller)中获取数据(model)并将数据展示在view上面去。

    activity将view和model进行分离,在activity中进行绑定和完成逻辑。

    mvc的优缺点:

    优点:

    1. 分工明确,使用mvc可以把数据库开发,程序业务逻辑开发,页面开发分开,每层具有相同特征,方便代码维护
    2. 松耦合,视图层,业务层分离,这样修改视图层(view),不用编译模型(model)和控制器(contorller)代码。业务流程规则改变修改模型层(model)。
    3. 可重用性强,多个view可以公用同一套model。

    缺点:

    view和model耦合相对较高,view可以直接访问model,view就会包含model信息,业务逻辑就会在view里面实现,更改view就比较困难,业务逻辑无法重用。

    mvp:

    m和v直接必须通过p才能访问,m和v不能直接进行交互。

    model(数据层): 数据获取 对数据进行存储 获取(数据库操作,网络请求操作)

    view(UI层) :activity,fragment 或者view,包含presenter成员变量,实现p的抽象接口,将对view上的业务逻辑放到p上实现,p调用view的逻辑将结果进行展示到view上。

    presenter(业务逻辑层):用来解耦model和view。 

    mvp有效降低view的复杂度,避免大量业务逻辑放在view上面,解除view和model的耦合,可扩展,可测试,保证系统整洁,灵活。view层不能和model层直接交互,必须经过p层来进行中转。也就是说数据和视图的逻辑控制都放在p层。

    目标:一套逻辑适用不同UI。

    mvp优缺点:

    优点:

    1. model与view完全分离,我们可以修改view而不影响model,也就是解耦合;
    2. 交互逻辑主要是在presenter里面进行;
    3. presenter中的逻辑可以适用于多个view里面,无需修改p里面的代码;
    4. 有利于单元测试。

    缺点:

    1. 定义大量的接口;
    2. view和presenter的交互过于紧密,view更新,presenter需要更新。

     

  • 相关阅读:
    在DOS的常用命令
    HTML中USEMAP的用法
    asp.net2.0角色管理,详细步骤
    利用ASP.NET动态生成HTML文件
    PetShop 4.0 详解之五(PetShop之业务逻辑层设计)
    使用成员资格和用户登录创建网站 (Visual Studio)
    Windows 找不到文件'(null)'.请确定文件名是否正确后,再试一下.要搜索文件,请单击[开始]按钮,然后单击"搜索"
    在ashx文件中读写session
    asp.net图片滚动+JAVASCRIPT(向右)
    动态编辑程序配置文件
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/5866714.html
Copyright © 2011-2022 走看看