[TOC]
- 单一职责原则:即一个类应该只负责一项职责
- 开闭原则:对扩展开放,对修改关闭
- 接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上
- 依赖倒转原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象
- 里氏替换原则:所有引用基类的地方必须能透明的使用其子类的对象
- 最少知道原则:一个对象应该对其他对象保持最少的了解
- Model是数据管理者,View为数据展示者,Controller为数据加工者,Model和View又都是由Controller来根据业务需求调配,所以Controller还负担了一个数据流调配的功能。
- 给ViewController提供数据
- 给ViewController存储数据提供接口
- 提供经过抽象的业务基本组建,供Controller调度
- 管理View Container的生命周期(self.view)
- 负责生成所有的View实例,并放入View Container
- 监听来自View与业务有关的事件,通过与Model的合作,来完成对应事件的业务
- 相应与业务无关的事件,实现动画效果,点击反馈等
- 界面元素表达
- 基于MVC衍生出来的一套架构。从概念上来说,它拆分的部分是Model部分,拆出来一个Store。这个Store专门负责数据存取。但从实际操作的角度上讲,它拆开的是Controller。
- Model为瘦Model,只用于表达数据,然后存储、数据处理都交给外面的来做。
- MVCS是将数据的存储和处理部分抽离出来,交给另一个对象去做,这个对象就是Store。
- 胖Model包含了部分弱业务逻辑。胖Model要达到的目的是,Controller从胖Model这里拿到数据之后,不用额外做操作或者只要做非常少的操作,就能够将数据直接应用在View上。(比如对时间数据在不同label上的显示处理逻辑)
- 瘦Model只负责业务数据的表达,所有业务无论强弱一律扔到Controller。瘦Model要达到的目的是,尽一切可能去编写细粒度Model,然后配套各种helper类(工具类)或方法来对弱业务做抽象,强业务依旧交给Controller
MVVM本质上是为Controller减负,把数据加工的任务从Controller中解放出来。
把RawData变成直接能被View使用的对象的一种Model
- 第一心法:保留最重要的任务,拆分其它不重要的任务
- 第二心法:拆分后的模块要尽可能提高可复用性,尽量做到DRY
- 第三心法:要尽可能提高拆分模块后的抽象度