在日常开发中,对适合的场景。使用模板模式可以帮助我们抽取公共的东西,使代码更加优雅。本次写了一个模版模式的使用模版,方便以后 cv。
本次是以订单的接受、拒绝、关闭三个操作作为 demo 来写的模板。
一、定义请求基类,不同操作的不同类
// 请求命令基类
public abstract class OrderRequest {
protected Long orderId;
// 其他通用字段
}
// 具体请求命令类
public class CloseOrderRequest extends OrderRequest {
// 关闭订单特有的字段
}
public class AcceptOrderRequest extends OrderRequest {
// 接受订单特有的字段
}
public class RejectOrderRequest extends OrderRequest {
// 拒绝订单特有的字段
}
二、定义模版
// 抽象执行器基类
@Component
public abstract class OrderProcessTemplate<T extends OrderRequest> {
public void processOrder(T request) {
// 通用的订单处理逻辑
checkRequest(request);
// 调用子类实现的特定处理逻辑
handleOrder(request);
// 其他通用的后续处理
// ...
}
protected abstract void handleOrder(T request);
private void checkRequest(T request) {
// 通用的请求校验逻辑
}
}
三、定义不同的子类实现
// 具体执行器类
@Service
public class CloseOrderService extends OrderProcessTemplate<CloseOrderRequest> {
@Override
protected void handleOrder(CloseOrderRequest request) {
// 处理关闭订单的特定逻辑
}
}
@Service
public class AcceptOrderService extends OrderProcessTemplate<AcceptOrderRequest> {
@Override
protected void handleOrder(AcceptOrderRequest request) {
// 处理接受订单的特定逻辑
}
}
@Service
public class RejectOrderService extends OrderProcessTemplate<RejectOrderRequest> {
@Override
protected void handleOrder(RejectOrderRequest request) {
// 处理拒绝订单的特定逻辑
}
}