在日常開發中,對適合的場景。使用模板模式可以幫助我們抽取公共的東西,使代碼更加優雅。本次寫了一個模版模式的使用模版,方便以后 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,一位后端開發工程師。
如果你對我感興趣,請移步我的個人博客,進一步了解。
- 文中如有錯誤,歡迎在評論區指正,如果這篇文章幫到了你,歡迎點贊和關注😊
- 本文首發于個人博客,未經許可禁止轉載💌