设计模式--tl;dr
2017-07-27 本文已影响0人
BarbaraBear
工厂方法(Factory Method)
父类不知道需要创建的具体对象,把对象的创建交给子类去做。
一般情况下是在工厂的其他方法中(otherOps),需要用到Product的实例。而这个实例的具体类型又会因为不同的子类有不同的要求。生成Product的方法一般为protected的,不被外部直接使用。
工厂方法类图单例(Singleton)
全局只有一个对象。
几种实现方式:
- 饿汉式:
static 成员变量
,类加载时初始化 - 懒汉式:Double Check Lock。懒加载
- 静态内部类:
- 枚举
关于懒汉式、静态内部类的写法
模板方法(Template Method)
父类中定义方法调用的步骤结构,步骤的具体实现由子类决定
public void templateMethod() {
doOp1();//sub ops
doOp2();//sub ops
}
image.png
观察者(Observer)
image.png实现对象间的联动,或者是通信
适配器(Adapter)
image.png将一种类型或者接口转换成另外一种类型,功能复用
装饰者(Decorator)
动态增加原有方法的功能。是一种AOP的实现方式
类图有好几种变形,具体可以查看这篇文字。适配器模式是一种通过组合而非继承的方式,动态实现组合式功能的好办法。
构建者(Builder)
分步构建对象,步骤之间没有顺序依赖关系。
迭代器(Iterator)
image.png提供一个统一的顺序访问集合中元素的接口,而不需要关心集合的具体实现。
组合(Composite)
image.png为树形结构组织的各个节点(叶子、非叶子),提供统一的访问接口。
策略(Strategy)
访问者(Visitor)
一个对象结构中定义了一组基本操作。在不改变对象的前提下,定义新的操作。
访问者模式的基本原理:回调。在调用对象新操作时,实际上回调到访问者的实现方法。实现方法可以拿到对象结构的数据,来进行基本操作的组装。所以说新操作是定义在了访问者的回调实现方法中,不会影响原有对象结构。
image.png桥接(Bridge)
P.S. 招聘简讯
美团网诚招Android、iOS、Java工程师。坐标北京望京。有意者可发简历至:xiongzhanyun@meituan.com