设计模式-一句话版

几个要点

SRP 单一职责,你懂的,Single Responsibility Principle

OCP 开放封闭,不解释,Open Closed Principle

DIP 依赖倒转原则,高层和低层都应该只依赖于抽象,Dependence Inversion Principle

LSP 里氏代换,子类能够代替父类,Liskov Substitution Principle

CARP 合成/聚合复用原则,尽量用合成、聚合代替继承,Composite/Aggregate Reuse Principle

LoD 迪米特法则,两个类减少直接通信,不要和陌生人说话,不该知道的不去知道,该知道的也少知道,Law of Demeter


创建型

sample factory 简单工厂模式,将对象的创建写在工厂中,会有个大switch case

factory method 工厂方法模式,具体生成哪个类由客户端调用不同的接口创建abstract factory 抽象工厂模式,利用反射,动态生成工厂

singleton 单例模式,不啰嗦了,注意多线程安全

prototype 原型模式,创建一个对象,后面在需要创建的时候拷贝自己,copy resume

builder 建造者模式,将流程与细节分离,bulider只负责控制流程,每个节点的细节单独实现


结构型

adapter 适配器模式,相当于转接头,常用于接口不兼容,又不能改

bridge 桥接模式,将一个大类的多个功能用若干个小类实现细节,用合成/聚合的方式组合,同CARP原则

composite 组合模式,父类实现一个最大化的接口,子类按需重载、扩展,像一棵树,父类是树的根

decorator 装饰模式,在装饰的子类之间传递需要被装饰的类,最终都会调用被装饰对象本身的root装饰方法

facade 外观模式,封装底层,提供统一的对外接口出处,Manager层

flyweight 享元模式,一个类的每个对象如果都有共同的成员,可以把所有该类对象的成员变成同一个,例如NSString的复用

proxy 代理模式,真实对象不直接跟外界打交道,通过中间代理调用,将来方便替换


行为型

observer 观察者模式,事件委托,被观察者不知道有谁在观察他,观察者不知道是谁会通知他

template method 模版方法模式,父类负责控制大流程,子类重写每个需要的函数去实现细节

command 命令模式,将一次请求/行为封装成一个对象进行传递,更好的控制

state 状态模式,一个对象是有状态的,状态对象由别人持有,状态的变化由状态自己控制完成,状态机

chain of responsibility 职责链模式,一个请求/行为会被一层一层的传递处理,每一层负责自己的处理以及是否传递给下一层

interpreter 解释器模式,定义一种文法/规则,将特定的内容转换成另一种内容,富文本解析/编译器

mediator 中介者模式,使用一个中介者对象来控制各个对象的通信/交互,同LoD法则

visitor 访问者模式,A需要B作为参数,A执行时需要执行B的方法,同时又将自己传回给B,双分派技术,B的种类需固定

strategy 策略模式,策略类提供统一对外接口,策略封装在策略工厂中,具体的不同策略在具体的策略类单独中实现

memento 备忘录模式,捕获一个对象的内部状态,并保存这个状态,将来可以恢复,NSKeyedArchiver

iterator 迭代器模式,迭代器不关心遍历的是谁,对所有遍历的类型提供统一的next/first…接口

Design pattern