# JavaDesignPattern **Repository Path**: lsn199603/java-design-pattern ## Basic Information - **Project Name**: JavaDesignPattern - **Description**: 设计模式课程代码 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2026-03-06 - **Last Updated**: 2026-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 设计模式 本项目展示了 Java 中常用的**设计模式(Design Patterns)**的完整实现。 ## 项目简介 设计模式是软件设计中经过验证的解决方案,能够帮助开发者构建可维护、可扩展、易于理解的代码。本项目通过具体的业务场景,演示了多种创建型、结构型和行为型设计模式的实现。 ## 项目结构 ``` src/ ├── FactoryMethodPattern/ # 工厂方法模式 - 支付场景 │ ├── Creator/ # 抽象工厂接口 │ ├── AbstractProduct/ # 抽象产品接口 │ ├── ConcreteCreator/ # 具体工厂实现 │ └── ConcreteProduct/ # 具体产品实现 │ ├── AbstractFactoryPattern/ # 抽象工厂模式 - GUI 组件 │ ├── AbstractFactory/ # 抽象工厂接口 │ ├── AbstractProduct/ # 抽象产品接口 │ ├── ConcreteFactory/ # 具体工厂实现 │ └── ConcreteProduct/ # 具体产品实现 │ ├── FacadePattern/ # 外观模式 - 订单处理 │ ├── Facade/ # 外观类 │ └── SubSystem/ # 子系统 │ ├── FacadePattern_1/ # 外观模式 - 广告服务 │ ├── Facade/ │ └── subsystem/ │ ├── DecoratorPattern/ # 装饰器模式 - 通知服务 │ ├── Component/ │ ├── ConcreteComponent/ │ ├── ConcreteDecorator/ │ └── Decorator/ │ ├── ObserverPattern1/ # 观察者模式 - 微信公众号 ├── ObserverPattern2/ # 观察者模式 - 商品折扣 ├── ObserverPattern3/ # 观察者模式 - 天气/旅游 │ └── StatePattern/ # 状态模式 - 电池电量 ├── Context/ ├── ConcreteState/ └── State/ ``` ## 设计模式说明 ### 1. 工厂方法模式(Factory Method Pattern) **定义**:定义一个创建对象的接口,但由子类决定实例化哪一个类。 **应用场景**:支付场景,支持多种支付方式(支付宝、微信、银联) **核心角色**: - `PayFactory`:抽象工厂接口 - `Pay`:抽象产品接口 - `AlipayFactory/Alipay`:具体工厂和具体产品 ### 2. 抽象工厂模式(Abstract Factory Pattern) **定义**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 **应用场景**:跨平台 GUI 组件开发 **核心角色**: - `GuiFactory`:抽象工厂(MacFactory/WinFactory) - 抽象产品(Button/Checkbox) - 具体产品(MacButton/WinButton 等) ### 3. 外观模式(Facade Pattern) **定义**:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得子系统更加容易使用。 **应用场景**:订单处理流程、广告服务业务流程 **核心角色**: - `OrderFacade`:订单处理门面 - `ServerFacade`:广告服务门面 - 各子系统服务 ### 4. 装饰器模式(Decorator Pattern) **定义**:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式相比生成子类更为灵活。 **应用场景**:通知服务(短信、微信、QQ 通知) ### 5. 观察者模式(Observer Pattern) **定义**:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 **应用场景**:微信公众号订阅、商品价格监控、天气预报 ### 6. 状态模式(State Pattern) **定义**:允许对象在其内部状态改变时改变它的行为。 **应用场景**:电池电量状态显示(高/中/低电量) ## 快速开始 ### 环境要求 - JDK 8 或更高版本 ### 编译运行 ```bash # 编译所有模式示例 find src -name "*.java" -exec javac -d out {} + # 运行工厂方法模式示例 java -cp out FactoryMethodPattern.Client # 运行抽象工厂模式示例 java -cp out AbstractFactoryPattern.Client # 运行外观模式示例 java -cp out FacadePattern.Client ``` ### 使用示例 #### 工厂方法模式 ```java // 使用支付宝支付 PayFactory factory = new AlipayFactory(); Pay pay = factory.createPay(); pay.pay(); // 使用微信支付 factory = new WeChatFactory(); pay = factory.createPay(); pay.pay(); ``` #### 抽象工厂模式 ```java // 创建 Mac 风格 GUI GuiFactory factory = new MacFactory(); Button button = factory.createButton(); Checkbox checkbox = factory.createCheckbox(); button.paint(); checkbox.paint(); ``` #### 外观模式 ```java // 简化订单处理流程 OrderFacade orderFacade = new OrderFacade(); orderFacade.placeOrder("user001", "product001", 99.9); ``` ## 许可证 本项目仅供学习交流使用。