# design_patterns_learning **Repository Path**: SuDong007_admin/design_patterns_learning ## Basic Information - **Project Name**: design_patterns_learning - **Description**: cursor生成的设计模式学习路径 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-17 - **Last Updated**: 2025-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设计模式学习规划 ## 学习目标 通过系统学习设计模式,掌握软件开发中常用的设计模式原理、适用场景及实现方法,提高代码质量和系统架构能力。 ## 学习路线 ### 第一阶段:设计模式基础(2周) 1. **面向对象设计原则** - 单一职责原则 (SRP) - 开放封闭原则 (OCP) - 里氏替换原则 (LSP) - 接口隔离原则 (ISP) - 依赖倒置原则 (DIP) - 迪米特法则 (LoD) - 组合/聚合复用原则 (CARP) 2. **UML类图基础** - 类图符号 - 关系表示法(继承、实现、依赖、关联、聚合、组合) ### 第二阶段:创建型模式(3周) 1. **单例模式 (Singleton Pattern)** - 懒汉式、饿汉式 - 双重检查锁定 - 静态内部类 - 枚举实现 2. **工厂方法模式 (Factory Method Pattern)** - 简单工厂 - 工厂方法 - 应用场景与实现 3. **抽象工厂模式 (Abstract Factory Pattern)** - 与工厂方法的区别 - 产品族与产品等级结构 - 实现方法与应用场景 4. **建造者模式 (Builder Pattern)** - 与工厂模式的区别 - 指挥者与建造者 - 链式调用实现 5. **原型模式 (Prototype Pattern)** - 浅克隆与深克隆 - 与其他创建型模式的比较 ### 第三阶段:结构型模式(4周) 1. **适配器模式 (Adapter Pattern)** - 类适配器与对象适配器 - 双向适配器 2. **桥接模式 (Bridge Pattern)** - 抽象与实现分离 - 与适配器模式的区别 3. **组合模式 (Composite Pattern)** - 树形结构 - 安全组合模式与透明组合模式 4. **装饰器模式 (Decorator Pattern)** - 与继承的区别 - 动态添加职责 5. **外观模式 (Facade Pattern)** - 子系统与外观 - 与中介者模式的区别 6. **享元模式 (Flyweight Pattern)** - 内部状态与外部状态 - 共享池实现 7. **代理模式 (Proxy Pattern)** - 静态代理 - 动态代理(JDK动态代理、CGLIB) - 不同代理类型(远程代理、虚拟代理、保护代理等) ### 第四阶段:行为型模式(5周) 1. **责任链模式 (Chain of Responsibility Pattern)** - 纯的与不纯的责任链模式 - 与命令模式的结合 2. **命令模式 (Command Pattern)** - 命令、接收者、调用者 - 宏命令 3. **解释器模式 (Interpreter Pattern)** - 文法规则 - 抽象语法树 4. **迭代器模式 (Iterator Pattern)** - 内部迭代器与外部迭代器 - 与Java集合框架的关系 5. **中介者模式 (Mediator Pattern)** - 与观察者模式的区别 - 星形网络结构 6. **备忘录模式 (Memento Pattern)** - 发起人、备忘录、管理者 - 多次撤销实现 7. **观察者模式 (Observer Pattern)** - 推模型与拉模型 - 事件监听机制 8. **状态模式 (State Pattern)** - 与策略模式的区别 - 状态转换 9. **策略模式 (Strategy Pattern)** - 与状态模式的区别 - 策略的选择方式 10. **模板方法模式 (Template Method Pattern)** - 钩子方法 - 与策略模式的区别 11. **访问者模式 (Visitor Pattern)** - 双分派技术 - 扩展性考虑 ### 第五阶段:综合应用(3周) 1. **设计模式组合使用** - 常见模式组合分析 - 实际项目中的应用 2. **反模式与重构** - 常见代码坏味道 - 使用设计模式进行重构 3. **设计模式在框架中的应用** - Spring框架中的设计模式 - MyBatis中的设计模式 - Java集合框架中的设计模式 ## 学习资源 1. **书籍** - 《设计模式:可复用面向对象软件的基础》(GoF) - 《Head First 设计模式》 - 《大话设计模式》 - 《设计模式之禅》 - 《重构:改善既有代码的设计》 2. **在线资源** - [Refactoring.Guru](https://refactoring.guru/design-patterns) - [Java Design Patterns](https://java-design-patterns.com/) - [SourceMaking](https://sourcemaking.com/design_patterns) ## 实践项目 每个设计模式学习后,将完成以下实践: 1. **基础实现**:实现该模式的基本结构 2. **实际应用**:在一个小型项目中应用该模式 3. **模式变体**:尝试该模式的不同变体实现 4. **模式比较**:与相似模式进行对比分析 ## 学习进度记录 | 日期 | 学习内容 | 完成情况 | 备注 | |------|---------|---------|------| | | | | | ## 会话记录 ### 会话1 (初始设置) - **主要目的**:创建设计模式学习规划 - **完成的主要任务**:制定了详细的设计模式学习计划,包括学习路线、时间安排和实践项目 - **关键决策和解决方案**:将学习内容分为五个阶段,从基础原则到综合应用 - **使用的技术栈**:Java - **修改的文件**:创建了README.md ### 会话2 (项目初始化) - **主要目的**:初始化设计模式学习项目结构并创建示例代码 - **完成的主要任务**: - 创建了Maven项目结构 - 实现了单一职责原则(SRP)的示例代码 - 实现了单例模式的多种实现方式 - 实现了工厂方法模式的示例 - 实现了适配器模式的示例 - 实现了观察者模式的示例 - **关键决策和解决方案**: - 采用Maven管理项目依赖 - 按照设计模式类型组织代码结构 - 每个示例都包含详细注释和多种实现变体 - **使用的技术栈**:Java, Maven, JUnit, Lombok - **修改的文件**: - 创建了pom.xml - 创建了src/main/java/patterns/principles/SingleResponsibilityPrinciple.java - 创建了src/main/java/patterns/creational/singleton/SingletonPattern.java - 创建了src/main/java/patterns/creational/factory/FactoryMethodPattern.java - 创建了src/main/java/patterns/structural/adapter/AdapterPattern.java - 创建了src/main/java/patterns/behavioral/observer/ObserverPattern.java ### 会话3 (扩展设计模式示例) - **主要目的**:扩展设计模式学习项目,添加更多设计模式示例 - **完成的主要任务**: - 实现了开放封闭原则(OCP)的示例代码 - 实现了抽象工厂模式的示例 - 实现了建造者模式的示例(传统方式和链式调用) - 实现了装饰器模式的示例(咖啡示例和I/O流示例) - 实现了策略模式的示例(支付策略和排序策略) - **关键决策和解决方案**: - 每个设计模式都提供了多个实际应用场景 - 展示了设计模式的不同实现变体 - 通过对比不良实现和良好实现,突出设计模式的优势 - **使用的技术栈**:Java - **修改的文件**: - 创建了src/main/java/patterns/principles/OpenClosedPrinciple.java - 创建了src/main/java/patterns/creational/abstractfactory/AbstractFactoryPattern.java - 创建了src/main/java/patterns/creational/builder/BuilderPattern.java - 创建了src/main/java/patterns/structural/decorator/DecoratorPattern.java - 创建了src/main/java/patterns/behavioral/strategy/StrategyPattern.java ### 会话4 (继续扩展设计模式示例) - **主要目的**:继续扩展设计模式学习项目,添加更多设计模式示例 - **完成的主要任务**: - 实现了依赖倒置原则(DIP)的示例代码 - 实现了原型模式的示例(浅克隆、深克隆和原型注册表) - 实现了组合模式的示例(文件系统和组织结构) - 实现了模板方法模式的示例(数据挖掘和饮料制作) - **关键决策和解决方案**: - 通过多个实际场景展示每种设计模式的应用 - 展示了设计模式的高级特性(如钩子方法) - 通过对比不良设计和良好设计,突出设计原则的重要性 - **使用的技术栈**:Java - **修改的文件**: - 创建了src/main/java/patterns/principles/DependencyInversionPrinciple.java - 创建了src/main/java/patterns/creational/prototype/PrototypePattern.java - 创建了src/main/java/patterns/structural/composite/CompositePattern.java - 创建了src/main/java/patterns/behavioral/template/TemplateMethodPattern.java