# design_pattern **Repository Path**: xenogene/design_pattern ## Basic Information - **Project Name**: design_pattern - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-15 - **Last Updated**: 2026-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 面向对象设计进阶:23种设计模式 本项目包含了GoF(Gang of Four)提出的23种设计模式的Java实现示例。 ## 创建型模式(Creational Patterns) ### 1. 单例模式(Singleton Pattern) **目的**:确保一个类只有一个实例,并提供全局访问点。 **应用场景**:线程池、缓存、日志对象等。 ### 2. 工厂方法模式(Factory Method Pattern) **目的**:定义创建对象的接口,让子类决定实例化哪个类。 **应用场景**:需要根据不同参数创建不同对象时。 ### 3. 抽象工厂模式(Abstract Factory Pattern) **目的**:提供创建一系列相关对象的接口,无需指定具体类。 **应用场景**:需要创建产品族,支持产品族的变化。 ### 4. 建造者模式(Builder Pattern) **目的**:将复杂对象的构建与表示分离,使同样的构建过程可以创建不同的表示。 **应用场景**:复杂对象的构建,如StringBuilder。 ### 5. 原型模式(Prototype Pattern) **目的**:通过复制现有对象来创建新对象,而不是通过new。 **应用场景**:对象创建成本较高时。 ## 结构型模式(Structural Patterns) ### 6. 适配器模式(Adapter Pattern) **目的**:将一个类的接口转换成客户端希望的另一个接口。 **应用场景**:兼容旧接口、第三方库集成。 ### 7. 桥接模式(Bridge Pattern) **目的**:将抽象部分与实现部分分离,使它们都可以独立变化。 **应用场景**:一个类存在多个独立变化的维度。 ### 8. 组合模式(Composite Pattern) **目的**:将对象组合成树形结构以表示"部分-整体"的层次结构。 **应用场景**:树形结构数据处理,如文件系统。 ### 9. 装饰器模式(Decorator Pattern) **目的**:动态地给对象添加一些额外的职责。 **应用场景**:在不改变原有对象结构的情况下增强功能。 ### 10. 外观模式(Facade Pattern) **目的**:为子系统中的一组接口提供一个一致的界面。 **应用场景**:简化复杂系统的访问接口。 ### 11. 享元模式(Flyweight Pattern) **目的**:运用共享技术来有效地支持大量细粒度的对象。 **应用场景**:需要大量相似对象以节省内存。 ### 12. 代理模式(Proxy Pattern) **目的**:为其他对象提供一种代理以控制对这个对象的访问。 **应用场景**:远程代理、虚拟代理、保护代理。 ## 行为型模式(Behavioral Patterns) ### 13. 责任链模式(Chain of Responsibility Pattern) **目的**:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 **应用场景**:Java Web中的过滤器链。 ### 14. 命令模式(Command Pattern) **目的**:将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。 **应用场景**:撤销/重做功能、事务处理。 ### 15. 解释器模式(Interpreter Pattern) **目的**:给定一种语言,定义它的文法的一种表示,并定义一个解释器。 **应用场景**:编译器、正则表达式解析。 ### 16. 迭代器模式(Iterator Pattern) **目的**:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。 **应用场景**:遍历集合对象。 ### 17. 中介者模式(Mediator Pattern) **目的**:用一个中介对象来封装一系列的对象交互。 **应用场景**:多对象交互复杂,需要解耦时。 ### 18. 备忘录模式(Memento Pattern) **目的**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 **应用场景**:撤销/重做、游戏存档。 ### 19. 观察者模式(Observer Pattern) **目的**:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知。 **应用场景**:事件监听、消息队列。 ### 20. 状态模式(State Pattern) **目的**:允许对象在内部状态改变时改变它的行为。 **应用场景**:对象行为依赖于状态,状态会动态变化。 ### 21. 策略模式(Strategy Pattern) **目的**:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。 **应用场景**:多种算法可互换使用时。 ### 22. 模板方法模式(Template Method Pattern) **目的**:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 **应用场景**:多个子类有相同的方法,逻辑相同,细节不同。 ### 23. 访问者模式(Visitor Pattern) **目的**:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 **应用场景**:数据结构稳定,操作算法易变化。 ## 项目结构 每个设计模式都有对应的目录,包含具体的实现代码和示例。建议按照以下顺序学习: 1. **简单模式**:单例、工厂方法、适配器、装饰器、观察者、策略、模板方法 2. **中等复杂度**:抽象工厂、建造者、桥接、组合、外观、代理、责任链、命令、迭代器、状态 3. **复杂模式**:原型、享元、中介者、备忘录、解释器、访问者 ## 学习建议 - 理解每个模式的设计意图和适用场景 - 查看具体代码实现,理解UML类图 - 尝试修改代码,加深理解 - 在实际项目中寻找应用场景 ## 参考资料 - 《设计模式:可复用面向对象软件的基础》- GoF - 《Head First 设计模式》 - 《Effective Java》