在开发应用程序的时候,以求更好的管理应用程序的复杂性,基于职责分离(Speration of Duties)的思想都会对应用程序进行分层.
软件工程熟悉的概念:高内聚,低耦合
耦合:
粗略地说,耦合就是两个东西通过某种作用连接在了一起。(我变你也变)
软件工程中耦合是指各个模块依赖程度,耦合越高,维护成本越高
为了便于维护,自然希望耦合越低越好。
解耦:
解除耦合,弱化两个东西之间的联系,减少互相之间互相影响。(我变你不变)
耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合
尽量做到高内聚,低耦合
对于我们 Android 开发者来说,常见的架构模式基本上就是 MVC,MVP,MVVM,这三种也是开发 GUI 应用程序常见的模式。
除此之外还有 分层模式,客户端-服务器模式(CS模式),主从模式,管道过滤器模式,事件总线模式 等等。
应用程序的数据为Model,用户界面的层次称为View
MV*(MVC/MVP/MVVM)就是实现了领域模型数据和UI层的解耦。
MVC、MVP、MVVM对其解耦的思路的不同。从历史的角度来看,MVC、MVP和MVVM是一种进化的关系
MVC(Model-View-Centre)的依赖关系
定义三个接口 (数据、视图、控制)
interface IModel {
/**
* 绑定 view
*/
fun setView(view:IView)
/**
* 数据模型 处理输入的数据
*/
fun dataHandler(data:String)
/**
* 数据模型 清除数据
*/
fun dataCleared()
}
interface IView {
fun setController(controller:IController)
/**
* 数据处理中状态
*/
fun dataHandlering()
/**
* 数据处理完成后 更新界面
*/
fun onDataHandled(data:String)
}
/**
* 控制器接口 定义控制器d逻辑
*/
interface IController {
fun setModel(model:IModel)
/**
* 数据变化后 通知控制器
*/
fun onDataChanged(data:String)
/**
* 清空按钮事件
*/
fun clearData()
}
分别实现IModel和IController
class CModel :