本文是对《iOS Design Patterns》中涉及到的设计模式的简要概括。

虽然设计模式种类繁多,但是总体上又可以分为三类

  • Creational: Singleton and Abstract Factory.
  • Structural: MVC, Decorator, Adapter, Facade and Composite.
  • Behavioral: Observer, Memento, Chain of Responsibility and Command.

Creational侧重于类实现的功能。Structural侧重于对象之间的组合结构。Behavioral则是提供了对象之间的一种交互方式。

MVC设计模式

是iOS开发中最常见的设计模式,主要是将Model-View-ViewController的数据层和视图层分开,由控制层负责联系两边的行为。随着ViewController层的不断扩大,出现了MVVM的模式,使得ViewModelView之间能够直接绑定吧,简化ViewController中的代码,为其瘦身。

Singleton模式

一个类唯一的实例,可以全局访问,共享数据状态。

Facade模式

提供简单的接口,把一系列复杂的接口进行封装。

Decorator模式

在不改变原有类的基础上,对其进行扩展,增加行为和职责,如Category。另一种实现则是增加一层封装,在封装过程中,在保留原有类的基础上添加新的属性和行为,有种层层嵌套的感觉。

在文章中Delegation也被划分为Decroator的一种。可以理解为Delegation是主动暴露其接口由第三方类来实现的一种装饰模式。

Adapter模式

将一个类的接口适配成另一个类可以调用的接口。侧重点调和两边不同的接口。 我之前一直将DelegateAdapter混淆。Adapter侧重在适配不同的接口,是一座桥梁。Apple通过Protocol来实现Adapter的作用,其产物就是Delegation,隐藏了显式的Adapter

Observer模式

通过侦听发射者来获取其动作和状态,常见的为Notification和KVO。

Memento模式

封装一个对象的内部状态或数据,使其可以在必要的时候保存或加载。封装保证了内部数据的隐秘性。

Command模式

Target-Action模式,将对一个对象的某个操作行为进行封装,传递给其他对象或者队列,使得该行为适当时刻被传递的对象或者队列触发。

##参考文献