Skip to content

Latest commit

 

History

History
65 lines (52 loc) · 3.58 KB

01-04、设计模式 L4.md

File metadata and controls

65 lines (52 loc) · 3.58 KB

[TOC]

设计模式六大原则

  • 单一职责原则:即一个类应该只负责一项职责
  • 开闭原则:对扩展开放,对修改关闭
  • 接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上
  • 依赖倒转原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象
  • 里氏替换原则:所有引用基类的地方必须能透明的使用其子类的对象
  • 最少知道原则:一个对象应该对其他对象保持最少的了解

常见的设计模式

1.单例模式

2.工厂模式

3.观察者模式

4.适配器模式

5.MVC 模式

6.代理模式

iOS 中的 21 种设计模式

MVC

  • Model是数据管理者,View为数据展示者,Controller为数据加工者,Model和View又都是由Controller来根据业务需求调配,所以Controller还负担了一个数据流调配的功能。

MVC的划分

M应该做的事:

  1. 给ViewController提供数据
  2. 给ViewController存储数据提供接口
  3. 提供经过抽象的业务基本组建,供Controller调度

C应该做的事:

  1. 管理View Container的生命周期(self.view)
  2. 负责生成所有的View实例,并放入View Container
  3. 监听来自View与业务有关的事件,通过与Model的合作,来完成对应事件的业务

V应该做的事:

  1. 相应与业务无关的事件,实现动画效果,点击反馈等
  2. 界面元素表达

MVCS

  • 基于MVC衍生出来的一套架构。从概念上来说,它拆分的部分是Model部分,拆出来一个Store。这个Store专门负责数据存取。但从实际操作的角度上讲,它拆开的是Controller。
  • Model为瘦Model,只用于表达数据,然后存储、数据处理都交给外面的来做。
  • MVCS是将数据的存储和处理部分抽离出来,交给另一个对象去做,这个对象就是Store。

胖Model和瘦Model

胖Model

  • 胖Model包含了部分弱业务逻辑。胖Model要达到的目的是,Controller从胖Model这里拿到数据之后,不用额外做操作或者只要做非常少的操作,就能够将数据直接应用在View上。(比如对时间数据在不同label上的显示处理逻辑)

瘦Model

  • 瘦Model只负责业务数据的表达,所有业务无论强弱一律扔到Controller。瘦Model要达到的目的是,尽一切可能去编写细粒度Model,然后配套各种helper类(工具类)或方法来对弱业务做抽象,强业务依旧交给Controller

MVVM

MVVM本质上是为Controller减负,把数据加工的任务从Controller中解放出来。

ViewModel的作用

把RawData变成直接能被View使用的对象的一种Model

如何选择MVC、MVVM架构

  • 第一心法:保留最重要的任务,拆分其它不重要的任务
  • 第二心法:拆分后的模块要尽可能提高可复用性,尽量做到DRY
  • 第三心法:要尽可能提高拆分模块后的抽象度