设计模式速记

目录

创建型

简单工厂模式/静态工厂方法模式

工厂方法模式/虚拟构造器模式/多态工厂模式

抽象工厂模式

建造者模式

原型模式

单例模式

结构型

适配器模式/包装器模式

桥接模式

组合模式/整体-部分模式

装饰模式

外观模式/门面模式

享元模式/轻量级模式

代理模式

行为型

职责链模式/责任链模式

命令模式/动作模式/事务模式

解释器模式

迭代器模式/游标模式

中介者模式/调停者模式

备忘录模式/标记模式

观察者模式/发布-订阅模式/模型-视图模式/源-监听器模式/从属者模式

状态模式/状态对象

策略模式/政策模式

模板方法模式

访问者模式


创建型

简单工厂模式/静态工厂方法模式

简单工厂模式定义:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类.

简单工厂模式中的角色:工厂,抽象产品,具体产品.

简单工厂模式结构:

简单工厂模式知识点:简单工厂模式的简化(合并工厂类和抽象产品类)

工厂方法模式/虚拟构造器模式/多态工厂模式

工厂方法模式定义:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化.工厂方法模式让一个类的实例化延迟到其子类.

工厂方法模式中的角色:抽象产品,具体产品,抽象工厂,具体工厂.

工厂方法模式结构:

工厂方法模式知识点:工厂方法的重载,工厂方法的隐藏(把业务方法的调用移至工厂类中).

抽象工厂模式

抽象工厂模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类.

抽象工厂模式中的角色:抽象产品,具体产品,抽象工厂,具体工厂.

抽象工厂模式结构:

抽象工厂模式知识点:产品等级结构,产品族,开闭原则的倾斜性.

建造者模式

建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.

建造者模式中的角色:抽象建造者,具体建造者,产品,指挥者.

建造者模式结构:

建造者模式知识点:省略指挥者(抽象建造者与指挥者合并),引入钩子方法.

原型模式

原型模式定义:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象.

原型模式中的角色:抽象原型,具体原型,客户端.

原型模式结构:

原型模式知识点:浅克隆与深克隆,Java语言中的clone()方法和Cloneable接口实现浅克隆,Serializable接口实现深克隆,原型管理器(可设置为单例).

单例模式

单例模式定义:确保一个类只有一个实例,并提供一个全局访问点.

单例模式中的角色:单例角色.

单例模式结构:

单例模式知识点:懒汉式与饿汉式,DCL双重检查锁定,静态内部类实现.


结构型

适配器模式/包装器模式

适配器模式定义:将一个类的接口转换成客户希望的另一个接口.适配器模式让那些接口不兼容的类可以一起工作.

适配器模式中的角色:目标抽象类,适配器类,适配者类.

类适配器模式结构:

对象适配器模式结构:

适配器模式知识点:适配器模式的变种(缺省适配器/单接口适配器,双向适配器).

桥接模式

桥接模式定义:将抽象部分与它的实现部分解耦,使得两者都能够独立变化.

桥接模式中的角色:抽象类,扩充抽象类,实现类接口,具体实现类.

桥接模式结构:

桥接模式知识点:两个独立变化维度,桥接模式与适配器模式的联用.

组合模式/整体-部分模式

组合模式定义:组合多个对象形成树形结构以表示具有部分-整体关系的层次结构.组合模式让客户端可以统一对待单个对象和组合对象.

组合模式中的角色:抽象构件,叶子构件,容器构件.

组合模式结构:

组合模式知识点:透明组合模式与安全组合模式(抽象构件中方法定义是否透明).

装饰模式

装饰模式定义:动态地给一个对象增加一些额外的职责.就扩展功能而言,装饰者模式提供了一种比使用子类更加灵活的替代方案.

装饰模式中的角色:抽象构件,具体构件,抽象装饰类,具体装饰类.

装饰模式结构:

装饰模式知识点:透明装饰模式与半透明装饰模式(新增行为是否被单独调用).

外观模式/门面模式

外观模式定义:为子系统中的一组接口提供一个统一的入口.外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.

外观模式中的角色:外观角色,子系统角色.

外观模式结构:

外观模式知识点:引入抽象外观类(无须修改外观类与客户端).

享元模式/轻量级模式

享元模式定义:运用共享技术有效地支持大量细粒度对象的复用.

享元模式中的角色:抽象享元类,具体享元类,非共享具体享元类,享元工厂类.

享元模式结构:

享元模式知识点:分离内部状态与外部状态,有外部状态的享元模式,单纯享元模式(不存在非共享具体享元类),复合享元模式(使用组合模式),写时复制Copy-on-write(读不变,写复制).

代理模式

代理模式定义:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问.

代理模式中的角色:抽象主题角色,代理主题角色,真实主题角色.

代理模式结构:

代理模式知识点:代理模式的分类(远程代理,虚拟代理,缓冲代理,保护代理,智能引用代理),RMI通信过程,JDK动态代理.


行为型

职责链模式/责任链模式

职责链模式定义:避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求.将接收请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止.

职责链模式中的角色:抽象处理者,具体处理者.

职责链模式结构:

职责链模式知识点:职责链的形态(直线,环,树形),纯的职责链模式和不纯的职责链模式(能否部分处理请求),

命令模式/动作模式/事务模式

命令模式定义:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作.

命令模式中的角色:抽象命令类,具体命令类,调用者,接收者.

命令模式结构:

命令模式知识点:命令队列,请求日志,撤销操作,宏命令.

解释器模式

解释器模式定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.

解释器模式中的角色:抽象表达式,终结符表达式,非终结符表达式,上下文.

解释器模式结构:

解释器模式知识点:编译原理基础知识(将文法中的表达式抽象为类).

迭代器模式/游标模式

迭代器模式定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不用暴露该对象的内部表示.

迭代器模式中的角色:抽象迭代器,具体迭代器,抽象聚合类,具体聚合类.

迭代器模式结构:

迭代器模式知识点:内部类实现迭代器,Java内置迭代器.

中介者模式/调停者模式

中介者模式定义:定义一个对象来封装一系列对象的交互.中介者模式使各对象之间不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.

中介者模式中的角色:抽象中介者,具体中介者,抽象同事类,具体同事类.

中介者模式结构:

中介者模式知识点:自身方法和依赖方法.

备忘录模式/标记模式

备忘录模式定义:在不破坏封装的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态.

备忘录模式中的角色:原发器,备忘录,负责人/管理者

备忘录模式结构:

备忘录模式知识点:实现多次撤销.

观察者模式/发布-订阅模式/模型-视图模式/源-监听器模式/从属者模式

观察者模式定义:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时其相关依赖对象皆得到通知并被自动更新.

观察者模式中的角色:目标,具体目标,观察者,具体观察者

观察者模式结构:

观察者模式知识点:JDK对观察者模式的支持,触发链.

状态模式/状态对象

状态模式定义:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.

状态模式中的角色:环境类,抽象状态类,具体状态类.

状态模式结构:

状态模式知识点:实现状态转换的方式(环境类/具体状态类负责).共享状态(设为静态成员).

策略模式/政策模式

策略模式定义:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法的变化独立于使用算法的客户.

策略模式中的角色:环境类,抽象策略类,具体策略类.

策略模式结构:

策略模式知识点:注意与命令模式区分.

模板方法模式

模板方法模式定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.

模板方法模式中的角色:抽象类,具体子类

模板方法模式结构:

模板方法模式知识点:模板方法与基本方法,两类钩子方法(是否挂钩与空实现).

访问者模式

访问者模式定义:表示一个作用于某对象结构中的各个元素的操作.访问者模式让用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作.

访问者模式中的角色:具体访问者,抽象访问者,抽象元素,具体元素,对象结构.

访问者模式结构:

访问者模式知识点:双重分派机制,访问者模式与组合模式联用.

猜你喜欢

转载自blog.csdn.net/qq_40925525/article/details/103402006