# Java-DesignParttern **Repository Path**: guanminwei/Java-DesignParttern ## Basic Information - **Project Name**: Java-DesignParttern - **Description**: 整理的JAVA实现的23种设计模式,含PlantUML画的UML图。 JAVA代码来自:http://c.biancheng.net/design_pattern/,略有调整。 PlantUML图脚本来自:https://blog.csdn.net/u010144805/article/details/82415385 PlantUML官网:https://plantuml.com/zh/sequence-diagram - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-07-26 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java设计模式实现 ## 项目简介 这是一个Java实现的23种设计模式的学习项目,包含了每种设计模式的详细实现代码、UML类图和示例演示。项目旨在帮助开发者更好地理解和应用各种设计模式,提高代码的可维护性、可扩展性和复用性。 ## 设计模式分类 设计模式分为三大类:创建型模式、结构型模式和行为型模式。 ### 1. 创建型模式(Creational Patterns) 创建型模式主要关注对象的创建过程,包括以下5种模式: | 模式名称 | 包路径 | 简要说明 | 示例代码 | |---------|---------|---------|---------| | 单例模式 | creatingPattern.singleton | 确保一个类只有一个实例,并提供全局访问点 | HungrySingleton.java, LazySingleton.java | | 工厂方法模式 | creatingPattern.factoryMethod | 定义一个创建对象的接口,让子类决定实例化哪一个类 | AnimalFarmTest.java | | 抽象工厂模式 | creatingPattern.abstractFactory | 提供一个创建一系列相关或相互依赖对象的接口 | FarmTest.java | | 建造者模式 | creatingPattern.builder | 将一个复杂对象的构建与它的表示分离 | BuilderClient.java | | 原型模式 | creatingPattern.prototype | 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 | ProtoTypeWukong.java | ### 2. 结构型模式(Structural Patterns) 结构型模式主要关注类和对象的组合,包括以下7种模式: | 模式名称 | 包路径 | 简要说明 | 示例代码 | |---------|---------|---------|---------| | 适配器模式 | structuralPattern.adapter | 将一个类的接口转换成客户希望的另一个接口 | ClassAdapterTest.java | | 桥接模式 | structuralPattern.bridge | 将抽象部分与它的实现部分分离,使它们都可以独立地变化 | BridgeTest.java | | 组合模式 | structuralPattern.composite | 将对象组合成树形结构以表示"部分-整体"的层次结构 | CompositePattern.java | | 装饰器模式 | structuralPattern.decorator | 动态地给一个对象添加一些额外的职责 | DecoratorPattern.java | | 外观模式 | structuralPattern.facade | 为子系统中的一组接口提供一个一致的界面 | WySpecialtyFacade.java | | 享元模式 | structuralPattern.flyweight | 运用共享技术有效地支持大量细粒度的对象 | FlyweightPattern.java | | 代理模式 | structuralPattern.proxy | 为其他对象提供一种代理以控制对这个对象的访问 | ProxyTest.java | ### 3. 行为型模式(Behavioral Patterns) 行为型模式主要关注对象之间的通信,包括以下11种模式: | 模式名称 | 包路径 | 简要说明 | 示例代码 | |---------|---------|---------|---------| | 责任链模式 | behaviorPattern.chainOfResponsibility | 为请求创建一个接收者对象的链 | LeaveApprovalTest.java | | 命令模式 | behaviorPattern.command | 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化 | CommandPattern.java | | 解释器模式 | behaviorPattern.interpreterPattern | 给定一个语言,定义它的文法的一种表示,并定义一个解释器 | InterpreterPatternDemo.java | | 迭代器模式 | behaviorPattern.iterator | 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示 | PictureIterator.java | | 中介者模式 | behaviorPattern.mediator | 用一个中介对象来封装一系列的对象交互 | SimpleMediatorPatternMain.java | | 备忘录模式 | behaviorPattern.memento | 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态 | DatingGame.java | | 观察者模式 | behaviorPattern.observer | 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 | BellEventTest.java | | 状态模式 | behaviorPattern.state | 允许一个对象在其内部状态改变时改变它的行为 | ScoreStateTest.java | | 策略模式 | behaviorPattern.strategy | 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换 | StrategyPattern.java | | 模板方法模式 | behaviorPattern.templateMethod | 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中 | StudyAbroadProcess.java | | 访问者模式 | behaviorPattern.visitor | 表示一个作用于某对象结构中的各元素的操作 | VisitorPattern.java | ## 项目结构 项目采用Maven标准目录结构,代码组织如下: ``` ├── src/ │ ├── main/ │ │ └── java/ │ │ ├── behaviorPattern/ # 行为型模式 │ │ ├── creatingPattern/ # 创建型模式 │ │ └── structuralPattern/ # 结构型模式 │ └── test/ # 测试代码 ├── .idea/ # IDE配置文件 ├── .history/ # 历史记录文件 ├── pom.xml # Maven配置文件 └── README.md # 项目说明文档 ``` ## 如何运行示例代码 1. 确保您已经安装了Java JDK 8或更高版本 2. 确保您已经安装了Maven 3. 克隆或下载项目到本地 4. 使用IDE(如IntelliJ IDEA、Eclipse)打开项目 5. 找到您想要运行的设计模式示例类 6. 运行示例类的main方法即可看到演示效果 ## 参考资料 - 代码参考:[C语言中文网](http://c.biancheng.net/design_pattern/) - UML图参考:[CSDN博客](https://blog.csdn.net/u010144805/article/details/82415385) - PlantUML官网:[https://plantuml.com/zh/sequence-diagram](https://plantuml.com/zh/sequence-diagram) ## 贡献 欢迎对项目进行改进和补充,如有问题或建议,请提交Issue或Pull Request。 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 ## 学习建议 1. 从简单的设计模式开始学习,如单例模式、工厂方法模式 2. 理解每种设计模式的适用场景和优缺点 3. 结合示例代码和UML图进行学习 4. 尝试自己实现设计模式,加深理解 5. 在实际项目中应用设计模式,提高代码质量 希望这个项目能帮助您更好地学习和理解设计模式!