MVC、MVP模式详解

       1、MVC和MVP
                MVC:
                    定义:
                        MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,
                        用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,
                        在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
                    
                    原理:
                         当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上。

                    分层:
                        视图层(view):
                            V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。
                        
                        控制层(controller):
                            C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,
                                      Activity读取V视图层的数据(eg.读取当前EditText控件的数据),控制用户输入(eg.EditText控件数据的输入),
                                      并向Model发送数据请求(eg.发起网络请求等),并更新model。

                        模型层(model):
                            M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。
                                      通知View改变,对应Android中的datebase、SharePreference等。(可通过时间消息总线实现,eventBus)

                    优缺点:
                        优点:
                            (1)、耦合性低。
                                       所谓耦合性就是模块代码之间的关联程度。
                                       利用MVC框架使得View(视图)层和Model(模型)层可以很好的分离,这样就达到了解耦的目的,所以耦合性低,
                                       减少模块代码之间的相互影响。
                            (2)、可扩展性好。
                                       由于耦合性低,添加需求,扩展代码就可以减少修改之前的代码,降低bug的出现率。(开闭原则)
                            (3)、模块职责划分明确。
                                        主要划分层M,V,C三个模块,利于代码的维护。

                        缺点:
                             在MVC模式中,Activity应该是属于View这一层。而实质上,它既承担了View,同时也包含一些Controller的东西在里面。
                             这对于开发与维护来说不太友好,耦合度大高了。

                    总结:
                        Model是对数据的处理、操作、访问。
                        View是显示数据的。
                        Activity在中间起了组织的作用。(Controller)

            MVP:
                定义:
                    MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。

                    这就是MVP模式,现在这样的话,Activity的工作的简单了,只用来响应生命周期,其他工作都丢到Presenter中去完成。
                    Presenter是Model和View之间的桥梁,为了让结构变得更加简单,View并不能直接对Model进行操作,这也是MVP与MVC最大的不同之处。

                分层:
                     (1)、View:
                                    负责绘制UI元素、与用户进行交互(在Android中体现为Activity,Fragment);
                     (2)、View interface:
                                     需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试;
                     (3)、Model:
                                    负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合)  
                     (4)、Presenter:
                                    作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。(通过接口联系)

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

                    缺点
                        由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。
                        还有一点需要明白,如果Presenter过多地渲染了视图,
                        往往会使得它与特定的视图的联系过于紧密。
                        一旦视图需要变更,那么Presenter也需要变更了。
                        比如说,原本用来呈现Html的Presenter现在也需要用于呈现Pdf了,
                        那么视图很有可能也需要变更。

                对比:
                     MVP模式:
                        View不直接与Model交互,而是通过与Presenter交互来与Model间接交互
                        Presenter与View的交互是通过接口来进行的,更有利于添加单元测试
                        通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑   

                    MVC模式:
                        View可以与Model直接交互。
                        Controller是基于行为的,并且可以被多个View共享。
                        可以负责决定显示哪个View。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVCMVPMVVM是常用的软件设计模式,用于分离应用程序的不同组件,提高代码的可维护性和可重用性。以下是它们的概念和区别: 1. MVC模式(模型-视图-控制器):MVC模式是最古老也是最常用的设计模式之一。它将应用程序分为三个组件:模型、视图和控制器。模型负责处理数据和业务规则,视图负责展示数据给用户,控制器负责处理用户输入并更新模型和视图。MVC模式通过分离关注点,使得修改一个组件对其他组件没有依赖,增强了代码的可维护性。 2. MVP模式(模型-视图-展示器):MVP模式是基于MVC模式的演化,主要用于桌面和移动应用程序的开发。它与MVC的不同之处在于,视图和控制器被合并成一个展示器,展示器负责处理用户输入、更新模型并更新视图。MVP模式通过与视图分离,使得视图的变化不会影响展示器的逻辑。这样,在测试时可以更轻松地独立对展示器进行单元测试。 3. MVVM模式(模型-视图-视图模型):MVVM模式是一种用于构建用户界面的设计模式。它将视图的状态和行为抽象成一个视图模型,视图模型负责处理用户输入、保存视图状态、与模型进行交互,并通过数据绑定将数据自动更新到视图上。MVVM模式通过数据绑定机制,使得视图和模型之间的通信变得更简单,提高了可维护性和可重用性。它常用于Web前端开发和桌面应用程序的现代界面开发。 总结来说,MVCMVPMVVM是三种常见的软件设计模式MVC模式是最早的一种,将应用程序分为模型、视图和控制器,用于分离关注点。MVP模式是基于MVC模式的演化,通过将视图和控制器合并成一个展示器,便于测试和维护。MVVM模式是用于构建用户界面的设计模式,通过视图模型和数据绑定机制,实现了视图与模型之间的解耦。每种模式都有自己的特点和适用场景,根据具体需求选择合适的模式可以提高开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值