生活随笔
收集整理的這篇文章主要介紹了
设计模式之规格模式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
規(guī)格模式
規(guī)格模式 使用了策略模式,組合模式. 只不過(guò)將模式具體化了
規(guī)格模式將 與或非 操作進(jìn)行了封裝, 實(shí)現(xiàn)了類(lèi)似 SQL查詢(xún)語(yǔ)句的操作.
類(lèi)圖如下:
?
其中的角色如下:
ISpecification 抽象規(guī)格書(shū): 對(duì)規(guī)格書(shū)的抽象定義CompositeSpecification 組合規(guī)格書(shū): 抽象類(lèi), 對(duì)規(guī)格書(shū)進(jìn)行 與或非 操作, 實(shí)現(xiàn) and,or,not 方法, 在方法中關(guān)聯(lián)子類(lèi), 因?yàn)樽宇?lèi)為固定類(lèi),故而父類(lèi)可以進(jìn)行關(guān)聯(lián)AndSpecification 與規(guī)格書(shū): 對(duì)規(guī)格書(shū)進(jìn)行與操作, 實(shí)現(xiàn) isSatisfiedBy 方法OrSpecification 或規(guī)格書(shū)NotSpecification 非規(guī)格書(shū)BizSpecification 業(yè)務(wù)規(guī)格書(shū): 實(shí)現(xiàn) isSatisfiedBy 方法, 對(duì)業(yè)務(wù)進(jìn)行判斷, 一個(gè)類(lèi)為一種判斷方式, 可進(jìn)行擴(kuò)展
抽象規(guī)格書(shū)代碼:
?
組合規(guī)格書(shū)代碼:
?
與或非規(guī)格書(shū)代碼:
?
?
?
業(yè)務(wù)規(guī)格書(shū):
?
場(chǎng)景類(lèi):
?
規(guī)格模式已經(jīng)是一個(gè)非常具體的應(yīng)用框架了, 遇到類(lèi)似多個(gè)對(duì)象中篩選查找, 或者業(yè)務(wù)規(guī)則不適于放在任何已有實(shí)體或值對(duì)象中, 而且規(guī)則的變化和組合會(huì)掩蓋那些領(lǐng)域?qū)ο蟮幕竞x, 或者是想自己編寫(xiě)一個(gè)類(lèi)似LINQ的語(yǔ)言工具的時(shí)候就可以照搬這部分代碼, 只要實(shí)現(xiàn)自己的邏輯規(guī)格書(shū)即可
總結(jié)
以上是生活随笔為你收集整理的设计模式之规格模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。