音乐资源网站开发,网站建设网站软件有哪些内容,wordpress站内计费搜索,影视app制作教程MVC模式#xff1a;
MVC结构#xff1a;
1.MVC(Model-View-Controller) 2.Model:对数据库的操作、对网络等的操作都应该在Model里面处理#xff0c;当然对业务计算#xff0c;变更等操作也是必须放在的该层的。 3.View:主要包括一下View及ViewGroup控件#xff0c;可以是…MVC模式
MVC结构
1.MVC(Model-View-Controller) 2.Model:对数据库的操作、对网络等的操作都应该在Model里面处理当然对业务计算变更等操作也是必须放在的该层的。 3.View:主要包括一下View及ViewGroup控件可以是系统控件也可以是自定义控件。4.Controller:Android的控制层通常在Activity、Fragment之中。从Model层获取数据将获取到的数据绑定到view上并且还需要监听用户的输入等操作。 本质就是Controller操作Model层的数据并且将数据返回给View层展示。
MVC的优点
1.分工明确各司所职。 2.一定程度上降低了代码间的耦合性。
MVC的缺点
1.随着界面及其逻辑的复杂度不断提升Activity类的职责不断增加以致变得庞大臃肿。 2,视图和控制器间过于紧密的联系妨碍了各自的重用。
MVP模式
MVP结构
1.MVP(Model-View-Presenter) 2.Model主要提供数据的存储功能。Presenter需要通过Model存取数据。 3.View: 负责处理点击事件和视图展示(Activity、Fragment或者某个View控件) 4.Presenter: View和Model之间的桥梁从Model检索数据后返回给View层。使得M/V之间不再有耦合关系。
MVP和MVC的区别
1.MVP中绝对不允许View直接访问Model 2.本质是增加了一个接口降低一层耦合度
MVP的特点
1.Presenter完全将Model和View解耦主要逻辑处于Presenter中。 2.Presenter和具体View没有直接关联通过定义好的接口进行交互。 3.View变更时可以保持Presenter不变(符合面向对象编程的特点) 4.View只应该有简单的Set/Get方法、用户输入、界面展示的内容此外没有更多内容。 5.低耦合Model和View的解耦决定了该特性。
MVP的优点
1.低耦合Model、View层的变换不会影响到对方。 2.可重用性Model层可以用于多个View。比如请求影视数据可能有多个页面都需要这个功能但是Model层代码只要有一份就可以了。 3.方便测试可以单独对Model层和View层进行测试。
MVP的缺点
1.MVP的中使用了接口的方式去连接view层和presenter层如果有一个逻辑很复杂的页面接口会有很多导致维护接口的成本非常大。 解决办法尽可能将一些通用的接口作为基类其他的接口去继承。
MVVM模式
MVVM结构
1.MVVM(Model-View-ViewModel)将Presenter替换为ViewModel。 2.View层就是展示数据的以及接收到用户的操作传递给viewModel层通过dataBinding实现数据与view的单向绑定或双向绑定 3.Model层最重要的作用就是获取数据了当然不止于此model层将结果通过接口的形式传递给viewModel层 4.ViewModel 层通过调用model层获取数据以及业务逻辑的处理。 MVVM中 viewModel 和MVP中的presenter 的作用类似 只不过是通过 databinding 将数据与ui进行了绑定。
MVVM的优点
1.双向绑定技术当Model变化时View-Model会自动更新View也会自动变化。很好做到数据的一致性不用担心在模块的这一块数据是这个值在另一块就是另一个值了。所以 MVVM模式有些时候又被称作model-view-binder模式。 2.View的功能进一步的强化具有控制的部分功能若想无限增强它的功能甚至控制器的全部功几乎都可以迁移到各个View上不过这样不可取那样View干了不属于它职责范围的事情。View可以像控制器一样具有自己的View-Model. 3.由于控制器的功能大都移动到View上处理大大的对控制器进行了瘦身。不用再为看到庞大的控制器逻辑而发愁了。
MVVM的缺点
1.数据绑定使得 Bug 很难被调试。你看到界面异常了有可能是你 View 的代码有 Bug也可能是 Model 的代码有问题。数据绑定使得一个位置的 Bug 被快速传递到别的位置要定位原始出问题的地方就变得不那么容易了。 2.一个大的模块中model也会很大虽然使用方便了也很容易保证了数据的一致性当时长期持有不释放内存就造成了花费更多的内存。 3.数据双向绑定不利于代码重用。客户端开发最常用的重用是View但是数据双向绑定技术让你在一个View都绑定了一个model不同模块的model都不同。那就不能简单重用View了。