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í)也是如此,這些代表失敗的對象“什么也不做”。