
歡迎訪問(wèn)我的博客:http://wangnan.tech
裝飾者模式
定義
動(dòng)態(tài)地將責(zé)任附加到對(duì)象上,想要擴(kuò)展功能,裝飾者提供有別于繼承的另一種選擇
get到的oo原則
- 對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉
要點(diǎn)
- 繼承屬于擴(kuò)展形式之一,但不見(jiàn)得是達(dá)到彈性設(shè)計(jì)的最佳方式。
- 在我們的設(shè)計(jì)中,應(yīng)該允許行為可以被擴(kuò)展,而無(wú)須修改現(xiàn)有的代碼。
- 組合和委托可用于在運(yùn)行時(shí)動(dòng)態(tài)地加上新的行為。
- 除了繼承,裝飾者模式也可以讓我們擴(kuò)展行為。
- 裝飾者模式意味著一群裝飾者類, 這些類用來(lái)包裝具體組件。
- 裝飾者類反映出被裝飾的組件類型(事實(shí)上,他們具有相同的類型,都經(jīng)過(guò)接口或繼承實(shí)現(xiàn))。
- 裝飾者可以在被裝飾者的行為前面與/或后面加上自己的行為, 甚至將被裝飾者的行為整個(gè)取代掉,而達(dá)到特定的目的。
- 你可以用無(wú)數(shù)個(gè)裝飾者包裝一個(gè)組件。
- 裝飾者一般對(duì)組件的客戶是透明的,除非客戶程序依賴于組件的具體類型。
- 裝飾者會(huì)導(dǎo)致設(shè)計(jì)中出現(xiàn)許多小對(duì)象,如果過(guò)度使用,會(huì)讓程序變得很復(fù)雜。
抽象工廠模式/工廠方法模式
抽象工廠模式定義
提供一個(gè)接口,用于創(chuàng)建相關(guān)或依賴對(duì)象的家族,而不需要明確指定具體類
工廠方法模式定義
定義一個(gè)創(chuàng)建對(duì)象的接口,但由子類絕對(duì)實(shí)例化的類是哪一個(gè),工廠方法讓類把實(shí)例化推遲到子類
get到的oo原則
- 依賴抽象,不是依賴具體類
要點(diǎn)
- 所有的工廠都是用來(lái)對(duì)象的創(chuàng)建
- 簡(jiǎn)單工廠,雖然不是真正的設(shè)計(jì)模式,但仍不失一個(gè)簡(jiǎn)單的方法,可以將客戶端程序從具體類解耦
- 工廠方法使用繼承,把對(duì)象的創(chuàng)建委托給子類,子類實(shí)現(xiàn)工廠方法來(lái)創(chuàng)建對(duì)象
- 抽象工廠使用對(duì)象組合,對(duì)象的創(chuàng)建被實(shí)現(xiàn)在工廠接口所暴露出來(lái)的方法中
- 所有工廠模式都通過(guò)減少應(yīng)用程序和具體類之間的依賴促進(jìn)松耦合
- 工廠方法允許類將實(shí)例化延遲到子類進(jìn)行
- 抽象工廠創(chuàng)建相關(guān)的對(duì)象家族,而不需要依賴他們的具體類
- 依賴倒置原則,指導(dǎo)我們避免依賴具體類型,而要盡量依賴抽象
- 工廠是很有威力的技巧,幫助我們針對(duì)抽象變成,而不是針對(duì)具體類編程