设计模式
以下是设计模式的分类及列表(基于经典23种设计模式):
创建型模式(对象创建机制)
- 单例模式(Singleton) 确保一个类仅有一个实例,并提供全局访问点。
- 工厂方法模式(Factory Method) 定义一个创建对象的接口,由子类决定实例化哪个类。
- 抽象工厂模式(Abstract Factory) 提供一个创建一系列相关或依赖对象的接口,无需指定具体类。
- 建造者模式(Builder) 将复杂对象的构建与表示分离,使相同构建过程可创建不同表示。
- 原型模式(Prototype) 通过复制现有对象创建新对象,避免直接实例化。
结构型模式(类与对象的组合)
- 适配器模式(Adapter) 转换一个类的接口,使其能适配另一个接口。
- 桥接模式(Bridge) 分离抽象与实现,使两者可独立变化。
- 组合模式(Composite) 将对象组合成树形结构,以统一方式处理单个对象和组合对象。
- 装饰器模式(Decorator) 动态地为对象添加额外职责,比继承更灵活。
- 外观模式(Facade) 为子系统提供统一接口,简化客户端与子系统的交互。
- 享元模式(Flyweight) 共享大量细粒度对象,减少内存占用。
- 代理模式(Proxy) 控制对对象的访问,提供替代对象以增强功能或减少开销。
行为型模式(对象间的通信与职责分配)
- 责任链模式(Chain of Responsibility) 将请求的发送者与接收者解耦,使多个对象都有机会处理请求。
- 命令模式(Command) 将请求封装为对象,支持撤销、排队等操作。
- 解释器模式(Interpreter) 定义语言的文法,并解释执行该语言的句子。
- 迭代器模式(Iterator) 提供一种遍历集合元素的统一方式,无需暴露内部结构。
- 中介者模式(Mediator) 通过中介对象协调多个对象间的交互,减少耦合。
- 备忘录模式(Memento) 保存对象状态,允许恢复到之前状态。
- 观察者模式(Observer) 当对象状态变化时,自动通知依赖它的其他对象。
- 状态模式(State) 允许对象在内部状态改变时改变行为,避免过多条件判断。
- 策略模式(Strategy) 定义一系列算法,封装后可互换使用,支持运行时动态选择。
- 模板方法模式(Template Method) 定义算法的骨架,子类实现具体步骤。
- 访问者模式(Visitor) 将算法与对象结构解耦,允许对结构中的元素执行不同操作。
其他扩展模式(非经典23种)
- 空对象模式(Null Object) 处理空值问题,避免空指针异常。
- 策略模式变体(如策略与模板方法结合) 根据场景灵活组合模式。
以上是常见的设计模式分类及列表,实际应用中可根据需求组合或扩展。
Java设计模式 文章被收录于专栏
设计模式是软件开发中针对反复出现的问题所总结归纳出的通用解决方案,它可以帮助开发者更高效地构建软件系统,提升代码的可维护性、可扩展性和可复用性。