# 软件设计模式 **Repository Path**: wangs-se/software-design-patterns ## Basic Information - **Project Name**: 软件设计模式 - **Description**: 记录软件设计模式中,上机实验的代码。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2023-04-12 - **Last Updated**: 2025-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: 课程作业 ## README # 软件设计模式实验代码 ## 0 说明 本仓库包含个人实验代码,用于存储和展示软件设计模式的应用。代码可能不完善,仅供参考。 ## 1 设计模式与实现 ### 1.1 策略模式 **应用场景**:电子商务系统中的销售订单处理 **实现功能**: - 根据不同国家应用不同税率计算 - 支持不同打印方式(A4、A5等) - 使用策略模式实现灵活扩展 **核心类**: - `TaskController`:任务控制器,处理销售请求 - `SalesOrder`:销售订单接口 - `AbstractSalesOrder`:抽象销售订单类,实现通用功能 - 多个具体实现类(`SalesOrderOnChina`、`SalesOrderOnUSA`等) ### 1.2 观察者模式 **应用场景**:用户注册时发送欢迎邮件和验证地址 **实现功能**: - 支持注册多个观察者 - 用户注册时自动通知所有观察者 - 实现松耦合的事件通知机制 **核心类**: - `Customer`:客户类,实现主题接口 - `Subject`:主题接口 - `Observe`:观察者接口 - 多个具体观察者实现类(`StudentObserve`、`TeacherObserve`等) ### 1.3 装饰器模式 **应用场景**:发票打印功能扩展 **实现功能**: - 支持添加多个表头和页脚 - 实现灵活的功能组合 - 保持开闭原则,易于扩展 **核心类**: - `Component`:组件接口 - `Decorator`:装饰器抽象类 - `SalesTicket`:基础票务类 - 多个装饰器实现类(`Header1`、`Footer2`等) ## 2 其他模式实现 ### 2.1 抽象工厂 **应用场景**:数据库连接管理 **实现功能**: - 支持多种数据库(MySQL、Oracle) - 提供统一的工厂接口创建数据库连接和语句 - 实现数据库类型的动态切换 **核心类**: - `DBFactory`:数据库工厂接口 - 多个工厂实现类(`MySQLFactory`、`OracleFactory`) - 数据库连接和语句接口及实现类 ### 2.2 命令模式 **应用场景**:电视机遥控器操作 **实现功能**: - 将操作封装为命令对象 - 支持多种操作(开关机、换台) - 实现请求发送者和接收者的解耦 **核心类**: - `Command`:命令接口 - 多个具体命令类(`ConcreteCommandOpen`、`ConcreteCommandChange`等) - `InvokerControl`:命令调用者 - `ReceiverTV`:命令接收者 ### 2.3 模板方法 **应用场景**:数据库操作流程标准化 **实现功能**: - 定义标准的数据库操作流程(连接、打开、使用、关闭) - 允许子类实现特定于数据库的具体操作 - 确保操作流程的一致性 **核心类**: - `DBOperator`:抽象数据库操作类,定义模板方法 - 具体实现类(`OracleDBOperator`、`SQLServerDBOperator`)