一句话描述iOS中的设计模式
本文是对《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的模式,使得ViewModel和View之间能够直接绑定吧,简化ViewController中的代码,为其瘦身。
Singleton模式
一个类唯一的实例,可以全局访问,共享数据状态。
Facade模式
提供简单的接口,把一系列复杂的接口进行封装。
Decorator模式
在不改变原有类的基础上,对其进行扩展,增加行为和职责,如Category。另一种实现则是增加一层封装,在封装过程中,在保留原有类的基础上添加新的属性和行为,有种层层嵌套的感觉。
在文章中Delegation也被划分为Decroator的一种。可以理解为Delegation是主动暴露其接口由第三方类来实现的一种装饰模式。
Adapter模式
将一个类的接口适配成另一个类可以调用的接口。侧重点调和两边不同的接口。
我之前一直将Delegate和Adapter混淆。Adapter侧重在适配不同的接口,是一座桥梁。Apple通过Protocol来实现Adapter的作用,其产物就是Delegation,隐藏了显式的Adapter。
Observer模式
通过侦听发射者来获取其动作和状态,常见的为Notification和KVO。
Memento模式
封装一个对象的内部状态或数据,使其可以在必要的时候保存或加载。封装保证了内部数据的隐秘性。
Command模式
Target-Action模式,将对一个对象的某个操作行为进行封装,传递给其他对象或者队列,使得该行为适当时刻被传递的对象或者队列触发。