策略模式
??為了解決針對(duì)不同局面需要作出大量判斷的情況榜聂;
??比如一個(gè)業(yè)務(wù)搞疗,根據(jù)不同條件的判斷會(huì)有ABCDE5中情況需要分別處理;
??策略模式就是這5中處理方式實(shí)現(xiàn)同一個(gè)接口strategy,調(diào)用者直接調(diào)用strategy须肆,在這個(gè)接口中通過(guò)參數(shù)來(lái)選取特定是處理邏輯即可匿乃;
??策略模式使得代碼擴(kuò)展性良好,不會(huì)有過(guò)多的判斷豌汇;
??策略模式中的策略類會(huì)越來(lái)越多扳埂,并且所有策略都是對(duì)外暴露的;
工廠模式
?????簡(jiǎn)單工廠
????為一個(gè)對(duì)象提供一個(gè)接口瘤礁,而無(wú)需指定他的具體類阳懂;調(diào)用者無(wú)需關(guān)心內(nèi)部邏輯,把參數(shù)放進(jìn)去就行柜思;
??模型:原料(參數(shù))->工廠->產(chǎn)品(結(jié)果)
??缺點(diǎn):一旦參數(shù)需要改變則需要改變工廠岩调;無(wú)法避免錯(cuò)誤調(diào)用;
?????多方法工廠
????在簡(jiǎn)單工廠的基礎(chǔ)上赡盘,針對(duì)不同的參數(shù)号枕,提供不同的方法來(lái)生產(chǎn)結(jié)果;
??模型同簡(jiǎn)單工廠陨享;
??缺點(diǎn):同簡(jiǎn)單工廠葱淳;
?????靜態(tài)工廠
????將調(diào)用方法聲名為靜態(tài)方法,可避免大部分環(huán)境問(wèn)題和注入問(wèn)題抛姑,泛用性更好赞厕;
?????抽象工廠
????抽象工廠是工廠的工廠;
??調(diào)用者調(diào)用抽象工廠獲取一條生產(chǎn)線定硝,再在這條生產(chǎn)線中進(jìn)行生產(chǎn)皿桑;
??抽象工廠針對(duì)一組服務(wù)來(lái)給出同一個(gè)接口,在添加類似產(chǎn)品時(shí)只需要集成抽象工廠就可以;
??缺點(diǎn):如果要添加一個(gè)全新的產(chǎn)品诲侮,則需要給所有生產(chǎn)線添加新的實(shí)現(xiàn)方法镀虐;
?????簡(jiǎn)單工廠、多方法工廠和靜態(tài)工廠
???????這些工廠適用于業(yè)務(wù)邏輯不復(fù)雜沟绪,產(chǎn)品量較少的情況刮便;
??????抽象工廠
????抽象工廠適用于業(yè)務(wù)邏輯復(fù)雜,產(chǎn)品量大绽慈,但是多產(chǎn)品間有類似邏輯可以寫在一起的情況
??facade模式
???????Facade模式要求一個(gè)子系統(tǒng)的外部與其內(nèi)部的通信通過(guò)一個(gè)統(tǒng)一的Facade對(duì)象進(jìn)行诺核。Facade模式提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用久信。當(dāng)子系統(tǒng)經(jīng)過(guò)不斷的演變窖杀,變得異常復(fù)雜時(shí),這時(shí)候裙士,為了讓子系統(tǒng)能夠工作入客,這就要求????????客戶端對(duì)子系統(tǒng)內(nèi)的各個(gè)模塊充分了解,才能使各個(gè)模塊協(xié)同工作腿椎,達(dá)到業(yè)務(wù)目標(biāo)桌硫。這樣無(wú)疑增加了客戶端的負(fù)擔(dān)。這時(shí)候子系統(tǒng)可以為外部定義一個(gè)訪問(wèn)的接口啃炸,通過(guò)接口來(lái)完成內(nèi)部的實(shí)現(xiàn)铆隘,客戶端不需要考慮過(guò)多的東西。