转载请注明:原文地址:https://www.jianshu.com/p/1912473dff9a
Android几种项目架构的优缺点
MVC架构
MVC, 即Model-View-Controller, 基于页面逻辑的修改要多于业务逻辑, 分离两种逻辑减少类代码的修改.
Model: 即数据层, 负责处理业务逻辑, 监听网络与数据库接口.
View: 即界面(UI)层, 显示来源于Model的数据.
Contoller: 即逻辑层, 传递用户的交互和更新Model的数据.
优点
MVC模式, 分离类的UI与业务职责, 增加可测试性与可扩展性. Model不引用任何Android类, 允许单元测试(Unit Test). Controller含有View的引用, 不引用Android类, 允许单元测试. View满足单一职责原则(SRP), 传递事件至Controller, 展示Model数据, 不包含业务逻辑, 允许UI测试.
缺点
View既依赖于Controller又依赖于Model. 在修改UI逻辑时, 也需要修改Model, 降低架构的灵活性. View与Model的职责部分重叠, 过于耦合, 在处理UI逻辑时, 被动模式与主动模式都会产生若干问题.
在被动模式中, Controller通知Model更新数据, 并通知View显示. 对于UI逻辑, 如果View处理, 单元测试会遗漏逻辑; 如果Model处理, 则隐式地依赖于View, 导致模块增加耦合.
MVP架构
MVP架构包含三大模块, 即Model, View, Presenter.
Model: 即数据层, 负责处理业务逻辑, 监听网络与数据库接口.
View: 即界面(UI)层, 展示数据, 响应用户事件并通知Presenter.
Presenter: 即展示