設(shè)計(jì)模式

command模式

? ? 該模式僅由一個(gè)具有唯一方法的接口組成。

? ? 適用范圍:數(shù)據(jù)庫事務(wù)操作、設(shè)備控制、多線程核心以及GUI的do/undo管理。

template method模式和strategy 模式

? ? 用途:都可以分離通用的算法和具體的上下文。都允許高層的算法獨(dú)立于它的具體實(shí)現(xiàn)細(xì)節(jié)重用

? ? 區(qū)別:

????????1.template method 模式使用繼承實(shí)現(xiàn),而strategy 模式使用委托實(shí)現(xiàn)

? ? ? ? 2.template method模式通用算法被放置在基類中,并且通過繼承在不同的上下文中實(shí)現(xiàn)該通用算法。但是這項(xiàng)技術(shù)是有代價(jià)的。繼承是一種非常強(qiáng)的關(guān)系。派生類不可避免的要和他們的基類綁定在一起。

? ? ? ? ? ? strategy模式通用抽象算法定義在接口中,然后從接口派生出具體類,之后把具體類傳遞給調(diào)用者,調(diào)用者就可以把具體工作委托給接口完成。

? ? ? ? ? ?3. strategy模式比template method 模式涉及更多數(shù)量的類和間接層次。

? ? ? ? ? ? 4.template method 模式部分違反了DIP,strategy完全遵循DIP原則。

? ? 說明:優(yōu)先使用對象組合,而不是類繼承

facade模式和mediator模式

? ? 兩個(gè)模式具有共同的目的。他們把某種策略施加到另外一組對象上,facade模式從上面施加策略,而mediator模式則是從下面施加策略。facade模式的使用是明顯而受限的,而mediator模式的使用是不明顯且不受限制的。

singleton模式和monostate模式

? ? 用途:在強(qiáng)制要求某個(gè)特定對象只能有一個(gè)單一實(shí)例的時(shí)候使用。

? ? 實(shí)現(xiàn)技術(shù):

? ? ? ? 1.singleton模式使用私有構(gòu)造函數(shù),一個(gè)靜態(tài)變量,以及一個(gè)靜態(tài)方法對實(shí)例化進(jìn)行控制和限制。

? ? ? ? 2.monostate模式把對象的所有變量變成靜態(tài)的。

null object模式

? ? 使用null object模式,可以確保函數(shù)總是返回有效的對象,即使在他們失敗時(shí)也是如此,這些代表失敗的對象“什么也不做”。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容