設計模式之模板方法在業務中的應用

背景

之前有介紹我們業務中統一了異常處理,創建了StatusException,因為我們只能對外拋出StatusException,否則調用方就要考慮異常的處理方式,這是一種具有壞味道的代碼,於是我們可能用用try catch包一層,然後捕獲Exception,然後拋出統一的StatusException。這樣是不是要每個方法都要做一次try catch呢? 大家是不是也想過AOP等方式呢?

今天給大家介紹一種設計模式-模板方法來解決這個場景,可能比較適合,但不是唯一的方式,

代碼實戰

設計模式之模板方法在業務中的應用

錯誤狀態的枚舉

定義錯誤狀態枚舉,兩個屬性,錯誤碼和描述

設計模式之模板方法在業務中的應用

統一異常:StatusException

統一異常定義,所有業務或接口,返回除了正確的返回值,只能返回該異常信息,不允許返回其他異常(開發要求,非必須)

定義error靜態方法,參數為ErrorStatus,返回自定義的異常

設計模式之模板方法在業務中的應用

設計模式之模板方法

此處劃重點,考試要考,哈哈

模板中三個方法,還涉及到泛型

checkParam:用於校驗參數

process:需要實現的方法

execute:模板執行方法:該方法定義了方法的執行順序,並對方法進行了異常捕獲,然後拋出統一StatusException

再看業務代碼實現邏輯

設計模式之模板方法在業務中的應用

業務代碼

重點看save方法

1的位置為覆蓋了checkParam,對參數進行校驗,校驗失敗拋出統一的StatusException

2的位置為save方法的實現邏輯機返回值

3的方法為調用了模板方法的執行方法,調動執行方法就按照模板方法中的順序執行,如果遇到異常統一拋出

通過這個模板方法就解決了每個方法都要try catch的壞味道,當然也可以通過aop方式實現,見仁見智,解決問題最重要


分享到:


相關文章: