# 软件设计模式 **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-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: 课程作业 ## README ### 0 说明 本仓库的代码是个人代码,其中并不完善,主要是用做存储功能。 **具体解释**: 1. 两次实验代码,其中Exp1.x为第一次上机代码,Exp2.x为第二次上机代码。 2. 第一次上机使用Eclipse开发,第二次使用IDEA开发; 3. Exp1.rar文件,第一次上机参考代码(老师提供)。 ### 1 设计模式和具体要求 #### 1.1 策略模式 ```txt 1.1 一个电子商务系统,其中有一个控制器对象(TaskController),用于处理销售请求,能够确认何时有人在请求销售订单,并将请求转给SalesOrder对象处理。SalesOrder对象的功能包括:填写订单 -- 直接继承,重写方法,甚至不写,直接使用父类计算税额(基于不同税率) -- 需要重写方法,基于不同的税率用不同尺寸纸张打印收据 -- 需要重写,基于不同的纸张 ``` #### 1.2 观察者模式 ```txt 1.2 一个电子商务系统,当一个新的消费用户加入系统,希望做以下两个操作: 向消费者发送一封欢迎邮件 向邮局查证消费者地址 ``` #### 1.3 模式 ```txt 1.3 有一个程序打印发票,所有发票都需要有正文部分,同时根据用户需要有的订单需要有表头,有的需要有页脚。表头有三种,分别为“表头1”,“表头2”,“表头3”,页脚有两种,分别为“页脚1”,“页脚2”。不同用户可能要求零个或多个表头,零个或多个页脚 ``` #### 2.1 抽象工厂 ```txt 2.1 某系统为了改进数据库操作的性能,自定义数据库连接对象Connection和语句对象Statement,可针对不同类型的数据库提供不同的连接对象和语句对象,如提供Oracle或MySQL专用连接类和语句类,而且用户可以通过配置文件等方式根据实际需要动态的选择系统数据库,使用抽象工厂模式设计该系统。 ``` #### 2.2 命令模式 ```txt 2.2 电视机是请求的接收者, 遥控器是请求的发送者, 遥控器上有一些按钮,不同的按钮对应电视机的不同操作。抽象命令角色由一个命令接口来扮演, 有三个具体的命令类实现了抽象命令接口,这三个具体命令类分别代表三种操作:打开电视机、关闭电视机和切换台。 ``` #### 2.3 模板方法 ```txt 2.3 对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB(),openDB(),useDB(),closeDB()四个方法分别对应这四个步骤,对于不同类型的数据库(如SQLserver和Oracle),其操作步骤都一致,只是连接数据库connDB()方法有所区别,现使用模板方法模式对其进行设计。 ```