uncategorized

设计模式学习

工厂模式

实现同一接口的类由工厂类中的一个或多个方法控制生成实例。工厂类可为静态类,可实现工厂类接口,实现抽象工厂模式。方便代码拓展,无需修改旧代码。

单例模式

这个JVM只有一个单例对象,需考虑多线程同步问题,可通过影子实例更新单例对象。

创造者模式

创造一个拥有多个成员变量的复合对象的类,对复合对象中的每个成员变量进行生成最终组合成复合对象。
Builer实现统一接口或继承于同一抽象类,由Director调用其方法实现构建。Builder变成可替换的组件,不同的Product由不同的Builder完成。

原型模式

复制对象,比new有更好的性能

适配器模式

为已有类添加方法以适应接口,已有类缺少方法。
类的适配器模式:适配器类使用继承
对象的适配器模式:实例化已有类成为私有对象
接口的适配器模式:创建抽象类实现所有接口中的方法,新类继承该抽象类。

装饰模式

对类中的方法进行装饰。装饰类实现与原类相同的接口,原类实例化成为装饰类的一个私有对象,由接口中的函数对原有方法进行装饰。

代理模式

与装饰模式类似,装饰类的原类在外部实例化赋值,代理类的原类在它实例化的时候实例化。

外观模式

由一个类来管理多个有联系的类,实现解耦的目的。用户只需要外观类的方法,方便添加组件。

桥接模式

与对象的适配器模式相似,不同点是桥接模式先有桥,两端的类可以改变,而适配器模式两边固定,使用适配器类使两端能兼容。

组合模式

类似于树,多个类实现一个接口,使用户对于这个组合能使用统一的方法进行操作。

享元模式

实现一个对象的共享池,通常与工厂模式合用,工厂类生成对象,由享元模式分配对象。实现资源共享,避免每次都new的开销。

策略模式

多个类实现一个接口,实现算法的可替换性。

模版方法模式

多个子类继承一个类

观察者模式

由一个类在需要更新时更新观察者类,被观察者继承一个抽象类,抽象类里保存观察者列表。类似与RSS订阅模式。

迭代子模式

由集合类生成Iterator,并由Iterator对集合类中的元素进行迭代。(next())

责任链模式

利用接口和继承把多个实现和继承统一接口的类连起来,一个用户请求发送给第一个类,依次传递,直到被处理。

命令模式

命令类实现一个接口,用户只需要调用这一接口中的方法,命令类多用于对复杂参数的封装,可用于每个操作都需要进行一些特殊处理的情况。

备忘录模式

使用备忘录类将类里面的变量保存起来到另一个类中,以便之后还原。

状态模式

在状态类中输入一个类(相同接口或继承),根据类属性的不同调用不同的方法处理。

访问者模式

访问者实现了对数据结构的操作,被访问者保存了数据结构,用户将访问者注入被访问者,由被访问者调用访问者的方法对被访问者中的数据进行读取。由于是多个访问者读取同一数据结构,所以数据结构的修改涉及代码较多,适宜用于数据结构稳定的系统。

中介者模式

中介者类包含的多个统一接口的类,由中介者类统一进行调度和关系处理,使两个有关系的类解耦。

解释器模式

多用于对语法解释器的实现。