# java-design-patterns **Repository Path**: dingjunjun_codeSpace/java-design-patterns ## Basic Information - **Project Name**: java-design-patterns - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-28 - **Last Updated**: 2026-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 23 种设计模式完整实战 📚 **Java 23 种设计模式完整实战示例,每个模式都有实际应用场景** --- ## 📋 项目说明 本项目包含 **Java 23 种设计模式** 的完整实现,每种模式都包含: - ✅ 完整的代码实现 - ✅ 详细的中文注释 - ✅ 实际应用场景示例 - ✅ 可运行的测试代码 - ✅ 优缺点分析 - ✅ 使用场景说明 --- ## 🎯 设计模式分类 ### 创建型模式(5 种) | 模式 | 英文名 | 应用场景 | |------|--------|---------| | 单例模式 | Singleton | 数据库连接池、配置管理器 | | 工厂方法模式 | Factory Method | 日志记录器、数据库连接 | | 抽象工厂模式 | Abstract Factory | UI 主题切换、数据库方言 | | 建造者模式 | Builder | 复杂对象构建、SQL 查询构建 | | 原型模式 | Prototype | 对象克隆、模板复制 | ### 结构型模式(7 种) | 模式 | 英文名 | 应用场景 | |------|--------|---------| | 适配器模式 | Adapter | 接口转换、旧系统兼容 | | 桥接模式 | Bridge | 跨平台实现、形状与颜色 | | 组合模式 | Composite | 树形结构、文件系统 | | 装饰器模式 | Decorator | IO 流、动态增强功能 | | 外观模式 | Facade | 统一接口、子系统封装 | | 享元模式 | Flyweight | 连接池、字符缓存 | | 代理模式 | Proxy | 远程代理、权限控制 | ### 行为型模式(11 种) | 模式 | 英文名 | 应用场景 | |------|--------|---------| | 责任链模式 | Chain of Responsibility | 审批流程、异常处理 | | 命令模式 | Command | 命令队列、撤销操作 | | 解释器模式 | Interpreter | SQL 解析、表达式计算 | | 迭代器模式 | Iterator | 集合遍历、数据库游标 | | 中介者模式 | Mediator | 聊天室、航班调度 | | 备忘录模式 | Memento | 游戏存档、撤销功能 | | 观察者模式 | Observer | 事件通知、消息推送 | | 状态模式 | State | 订单状态、线程状态 | | 策略模式 | Strategy | 支付策略、排序算法 | | 模板方法模式 | Template Method | 流程框架、数据分析 | | 访问者模式 | Visitor | 文件导出、报表生成 | --- ## 🚀 快速开始 ### 环境要求 ``` JDK 17+ Maven 3.8+ IDEA/Eclipse ``` ### 编译运行 ```bash # 克隆项目 git clone https://gitee.com/your-username/java-design-patterns.git # 进入项目目录 cd java-design-patterns # 编译项目 mvn clean compile # 运行测试 mvn test # 运行示例 mvn exec:java -Dexec.mainClass="com.patterns.creational.singleton.SingletonTest" ``` --- ## 📁 项目结构 ``` java-design-patterns/ ├── src/ │ ├── main/ │ │ ├── java/com/patterns/ │ │ │ ├── creational/ # 创建型模式 │ │ │ │ ├── singleton/ # 单例模式 │ │ │ │ ├── factory/ # 工厂方法模式 │ │ │ │ ├── abstractfactory/ # 抽象工厂模式 │ │ │ │ ├── builder/ # 建造者模式 │ │ │ │ └── prototype/ # 原型模式 │ │ │ ├── structural/ # 结构型模式 │ │ │ │ ├── adapter/ # 适配器模式 │ │ │ │ ├── bridge/ # 桥接模式 │ │ │ │ ├── composite/ # 组合模式 │ │ │ │ ├── decorator/ # 装饰器模式 │ │ │ │ ├── facade/ # 外观模式 │ │ │ │ ├── flyweight/ # 享元模式 │ │ │ │ └── proxy/ # 代理模式 │ │ │ └── behavioral/ # 行为型模式 │ │ │ ├── chainofresponsibility/ │ │ │ ├── command/ │ │ │ ├── interpreter/ │ │ │ ├── iterator/ │ │ │ ├── mediator/ │ │ │ ├── memento/ │ │ │ ├── observer/ │ │ │ ├── state/ │ │ │ ├── strategy/ │ │ │ ├── template/ │ │ │ └── visitor/ │ │ └── resources/ │ └── test/ │ └── java/com/patterns/ ├── docs/ # 详细文档 ├── pom.xml └── README.md ``` --- ## 📖 使用示例 ### 单例模式示例 ```java // 获取单例实例 Singleton instance = Singleton.getInstance(); instance.doSomething(); ``` ### 工厂方法模式示例 ```java // 创建日志记录器 Logger logger = LoggerFactory.getLogger("file"); logger.log("Hello World"); ``` ### 观察者模式示例 ```java // 创建主题和观察者 Subject subject = new ConcreteSubject(); Observer observer = new ConcreteObserver(); subject.attach(observer); subject.setState("New State"); ``` --- ## 🎓 学习路线 ### 第一阶段:创建型模式 1. 单例模式(1 天) 2. 工厂方法模式(1 天) 3. 抽象工厂模式(2 天) 4. 建造者模式(1 天) 5. 原型模式(1 天) ### 第二阶段:结构型模式 1. 适配器模式(1 天) 2. 桥接模式(2 天) 3. 组合模式(1 天) 4. 装饰器模式(2 天) 5. 外观模式(1 天) 6. 享元模式(1 天) 7. 代理模式(2 天) ### 第三阶段:行为型模式 1. 责任链模式(2 天) 2. 命令模式(1 天) 3. 解释器模式(2 天) 4. 迭代器模式(1 天) 5. 中介者模式(1 天) 6. 备忘录模式(1 天) 7. 观察者模式(2 天) 8. 状态模式(2 天) 9. 策略模式(1 天) 10. 模板方法模式(1 天) 11. 访问者模式(2 天) **预计完成时间:30 天** --- ## 💡 设计模式六大原则 | 原则 | 英文 | 说明 | |------|------|------| | **单一职责原则** | SRP | 一个类只负责一个职责 | | **开闭原则** | OCP | 对扩展开放,对修改关闭 | | **里氏替换原则** | LSP | 子类可以替换父类 | | **依赖倒置原则** | DIP | 依赖抽象,不依赖具体 | | **接口隔离原则** | ISP | 接口要小而专 | | **迪米特法则** | LOF | 最少知道原则 | --- ## 📚 参考资料 - 《设计模式:可复用面向对象软件的基础》 - 《Head First 设计模式》 - 《Effective Java》 - 《Java 编程思想》 --- ## 📝 许可证 MIT License --- ## 👨‍💻 作者 Created with ❤️ for Java learners --- *最后更新:2026-03-17*