文章目录
原则
扩展优于修改。开闭原则:对扩展开发,对修改封闭。
…
分类
单例模式
确保一个类只有一个实例,并且提供全局访问方式。
实现:
- private构造方法
- 饿汉式:类加载时立即实例化,类里面写new
- 懒汉式:第一次使用时才实例化,加锁防止多线程多次实例化。双重检验锁加速
简单工厂模式
工厂 -> 子类
定义一个工厂类来负责创建其他类的实例。
实现:
- 根据传入参数不同创建不同实例
工厂模式
工厂 -> 子工厂 -> 子类
定义一个创建类的接口,让子类决定实例化哪个类。
实现:
- 两个抽象接口:抽象工厂、抽象产品
- 两个具体类:具体工厂类、具体产品类
- 抽象工厂产生具体工厂,具体工厂类创建产品类并实现抽象产品类的方法。
抽象工厂模式
工厂模式只能创建一大类产品,抽象工厂模式可以生产几大类产品。
实现:
- 相比工厂模式:多个抽象产品。
装饰器模式
动态给对象添加功能。相比子类更加灵活。
实现:
- 装饰器也实现了原来的接口,加上新的功能,然后装饰器构造方法里传入具体对象。
适配器模式
将一个类的接口变为客户端需要的另一个接口。
实现:
- 原有方法再外包一个方法。
观察者模式
一对多,其相关依赖对象得到通知并更新。
实现:
- 添加观察者
- 通知观察者
外观模式
要求子系统外部与其内部的通信必须通过一个统一的对象进行。“中介”。不符合开闭原则。
状态模式
允许一个对象在其内部状态改变时改变它的行为。“类似switch”
策略模式
定义一组算法,可以相互替换,可以随意选择一种。
“状态模式”关注不同状态下所有行为,“策略模式”直接关注具体行为。
代理模式
为其他对象提供一个代理已控制对这个对象的访问。
责任链模式
一种处理请求的模式,一条处理链上直到某个处理器处理成功为止。
模板方法模式
固定步骤的算法框架,具体步骤的实现方法可子类实现。
享元模式
运用共享技术有效地支持大量细粒度的对象。“共享单车库”、“池技术”。
命令模式
将命令转换为包含该命令所有信息的独立对象。然后对象绑定命令。
生成器模式
生成器包括一系列步骤,具体对象选择其中几个步骤。对象类上写@Builder可以自动实现。
原型模式
“克隆”,克隆了私有成员。
实现:
- implements Prototype,然后override clone()方法
备忘录模式
“克隆”交给对象本身去做,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。
实现:
- 备忘录类,内部成员变量和需要备份的类一致,构造方法保存了待备份类的私有变量。
- 备忘录栈,存储备忘录类的对象。
迭代器模式
不暴露集合底层表现形式的情况下遍历集合中所有的元素。
组合模式
将对象组合成树形结构,并且能像使用独立对象一样使用它们。
桥接模式
维度分离。将抽象和实现解耦,使得两者可以独立变化。化继承为关联。