在日常开发中,对适合的场景。使用模板模式可以帮助我们抽取公共的东西,使代码更加优雅。本次写了一个模版模式的使用模版,方便以后 cv。
本次是以订单的接受、拒绝、关闭三个操作作为 demo 来写的模板。
一、定义请求基类,不同操作的不同类
// 请求命令基类
public abstract class OrderRequest {protected Long orderId;// 其他通用字段
}// 具体请求命令类
public class CloseOrderRequest extends OrderRequest {// 关闭订单特有的字段
}public class AcceptOrderRequest extends OrderRequest {// 接受订单特有的字段
}public class RejectOrderRequest extends OrderRequest {// 拒绝订单特有的字段
}
二、定义模版
// 抽象执行器基类
@Componentpublic 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> {@Overrideprotected void handleOrder(CloseOrderRequest request) {// 处理关闭订单的特定逻辑}
}@Service
public class AcceptOrderService extends OrderProcessTemplate<AcceptOrderRequest> {@Overrideprotected void handleOrder(AcceptOrderRequest request) {// 处理接受订单的特定逻辑}
}@Service
public class RejectOrderService extends OrderProcessTemplate<RejectOrderRequest> {@Overrideprotected void handleOrder(RejectOrderRequest request) {// 处理拒绝订单的特定逻辑}
}
四、最后
我是 xiucai,一位后端开发工程师。
如果你对我感兴趣,请移步我的个人博客,进一步了解。
- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌