規格模式 規格模式 使用了策略模式,組合模式. 只不過將模式具體化了 規格模式將 與或非 操作進行了封裝, 實現了類似 SQL查詢語句的操作. 類圖如下: 其中的角色如下: 抽象規格書代碼: 組合規格書代碼: 與或非規格書代碼: 業務規格書: 場景類: 規格模式已經是一個非常具體的應用框架了, 遇到 ...
規格模式
規格模式 使用了策略模式,組合模式. 只不過將模式具體化了
規格模式將 與或非 操作進行了封裝, 實現了類似 SQL查詢語句的操作.
類圖如下:
其中的角色如下:
- ISpecification 抽象規格書: 對規格書的抽象定義
- CompositeSpecification 組合規格書: 抽象類, 對規格書進行 與或非 操作, 實現 and,or,not 方法, 在方法中關聯子類, 因為子類為固定類,故而父類可以進行關聯
- AndSpecification 與規格書: 對規格書進行與操作, 實現 isSatisfiedBy 方法
- OrSpecification 或規格書
- NotSpecification 非規格書
- BizSpecification 業務規格書: 實現 isSatisfiedBy 方法, 對業務進行判斷, 一個類為一種判斷方式, 可進行擴展
抽象規格書代碼:
組合規格書代碼:
與或非規格書代碼:
業務規格書:
場景類:
規格模式已經是一個非常具體的應用框架了, 遇到類似多個對象中篩選查找, 或者業務規則不適於放在任何已有實體或值對象中, 而且規則的變化和組合會掩蓋那些領域對象的基本含義, 或者是想自己編寫一個類似LINQ的語言工具的時候就可以照搬這部分代碼, 只要實現自己的邏輯規格書即可