文章目录
- 一、项目总体要求
- <设计模式应用>
- 第一次文档要求
- 第二次文档要求
- 二、示例
- 第一次文档 - 设计原则应用
- 1、题目描述
- 2、设计:
- (1)优化理由陈述
- (2)类图
- (3)实现代码
- 第二次文档 - 设计模式应用
- 1、题目描述
- 2、设计:
- (1) 优化理由陈述
- (2)类图
- (3)实现代码
- 三、源码获取:
一、项目总体要求
分为两次完成。第一次为基本原则的应用,第二次为设计模式的应用。
第一次为文档撰写和代码实现,针对一个问题应用3种以上(包括3种)的面向对象设计基本原则进行优化。
1、优化项目业务介绍
目前手中待优化项目主要解决哪方面的业务问题。将实现的功能做以简单介绍。
2、初始方案
(1)、原有方案类的设计(类图)
(2)、初始代码
3、优化方案
(1)优化理由陈述
请说明原有程序存在的问题,根据什么原则对此问题进行的改进。此处可以借助类图进行说明
(2)类图
将程序优化后的类图粘贴到此处,最好能够在图中标明使用设计原则的部分及名称
(3)优化后的代码
可以将代码拷贝到这里,并对优化后部分的代码进行加粗显示。
<设计模式应用>
第二次为文档撰写和代码实现,题目自拟,针对一个问题应用2种以上(包括2种)的面向对象设计模式进行优化。
-
优化案例业务介绍
目前手中待优化程序主要解决哪方面的业务问题。将实现的功能做以简单介绍。 -
初始方案
(1)、原有方案类的设计(类图)
(2)、初始代码
可以将代码拷贝到这里,也可以将代码文件进行编号,在这里进行引用。 -
优化方案
(1)优化理由陈述
请说明原有程序存在的问题,根据什么模式对此问题进行的改进。此处可以借助类图进行说明。
(2)类图
将程序优化后的类图粘贴到此处,最好能够在图中标明使用设计模式的部分及名称。
(3)化后的代码
可以将代码拷贝到这里,并对优化后部分的代码进行加粗显示。
第一次文档要求
1、题目描述
2、设计:
(1)优化理由陈述,说明原有程序存在的问题,根据什么原则对此问题进行的改进。
(2)类图(针对一个项目运用多个原则画在一个类图上)
(3)实现代码
3、评分标准如下
(1)原则选择的合理性
是否能够指出代码中存在的不合理性,并能够选择合理的设计原则进行优化。
(2)代码实现的合理性
代码对设计原则的切实实施,将设计原则真正落实到代码上。
第二次文档要求
1、题目描述
2、设计
(1) 优化理由陈述,分别介绍在哪里应用了哪些设计模式,并说明理由。
(2)类图(针对一个项目运用多个模式画在一个类图上)
(3)实现代码
3、评分标准如下
(1)2个以上模式
设计模式应用个数应在2——6之间,鼓励多运用设计模式。
(2)模式合理性
模式应用的合理性指的是确实运用得很巧妙地解决问题为非常优秀,解决了实际问题为很好,模式得到应用为合格,如果用得太牵强则需要改进。
(3)类图的合理性
类图的正确性是指在当前业务背景下,类图是否准确地表达了设计模式的意图。
(4)代码实现规范
代码的规范性是指源代码的编写是否遵守了编码规范。
二、示例
下面会提供一个示例性的框架来指导的文档撰写和代码实现
这里仅提供一个概念性的描述以及伪代码示例。
第一次文档 - 设计原则应用
1、题目描述
假设我们要开发一个订单处理系统,该系统用于处理来自客户的订单请求,包括创建订单、支付订单以及取消订单等功能。
2、设计:
(1)优化理由陈述
原有系统的问题在于:
- 类职责过于集中,单一类承担了过多的责任,违反了单一职责原则(SRP)。
- 类之间耦合度高,修改一处可能影响其他多处,违反了开闭原则(OCP)。
- 难以扩展新功能,如增加新的支付方式,这体现了里氏替换原则(LSP)没有得到良好遵循。
(2)类图
【这里应该插入一个类图,展示原始设计以及优化后的设计。原始设计中可能会有一个Order
类负责所有操作,而优化后的设计中会有多个类,如Order
, OrderService
, PaymentService
等,每个类负责一部分功能。】
(3)实现代码
原始代码:
public class Order {
public void createOrder() { ... }
public void payOrder() { ... }
public void cancelOrder() { ... }
}
优化后的代码:
// Order类专注于订单数据
public class Order {
private String orderId;
// 其他属性...
}
// OrderService类处理订单逻辑
public class OrderService {
public void createOrder(Order order) { ... }
public void cancelOrder(Order order) { ... }
}
// PaymentService类处理支付逻辑
public class PaymentService {
public void payOrder(Order order) { ... }
}
第二次文档 - 设计模式应用
1、题目描述
继续上面的订单处理系统,我们希望进一步优化代码结构,使得系统更加灵活和易于维护。
2、设计:
(1) 优化理由陈述
现有系统的问题在于:
- 当添加新的支付方式时,需要修改
PaymentService
类,违反了开闭原则(OCP)。 - 创建订单时需要一系列复杂的初始化步骤,这使得
createOrder
方法变得庞大且难以管理。
我们考虑引入工厂模式(Factory Pattern)来创建不同类型的Order
实例,以及策略模式(Strategy Pattern)来处理不同的支付策略。
(2)类图
【这里应该插入一个类图,展示优化后的设计。例如OrderFactory
类用于创建Order实例,PaymentStrategy
接口定义支付策略,ConcretePaymentStrategy
类实现具体的支付策略】
(3)实现代码
// OrderFactory类
public class OrderFactory {
public Order createOrder(OrderType type) { ... }
}
// PaymentStrategy接口
public interface PaymentStrategy {
void pay(Order order);
}
// ConcretePaymentStrategy类
public class CreditCardPayment implements PaymentStrategy {
public void pay(Order order) { ... }
}
public class PayPalPayment implements PaymentStrategy {
public void pay(Order order) { ... }
}
// OrderService类使用策略模式
public class OrderService {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy strategy) {
this.paymentStrategy = strategy;
}
public void processOrder(Order order) {
// 使用策略模式处理支付
paymentStrategy.pay(order);
}
}
可以根据上述指导来完成具体实现,并确保遵循标准中的各项要求。也可以点击下方链接获取更多
三、源码获取:
主页私信:面向对象、三级项目