設(shè)計模式

1. OO基礎(chǔ)

抽象
封裝
多態(tài)
繼承

2. OO原則

封裝變化
多用組合,少用繼承
針對接口編程,不針對實現(xiàn)編程
為交互對象之間的松耦合設(shè)計而努力
對擴展開放,對修改關(guān)閉

3. 設(shè)計模式

3.1 策略模式

<b>策略模式</b> 定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。


策略模式01.png

3.2 觀察者模式

<b>觀察者模式</b> 定義了一系列對象之間的一對多關(guān)系,當一個對象改變狀態(tài),其他依賴者都會收到通知,并自動更新。


觀察者模式01.png
1. 觀察者模式定義了對象之間一對多的關(guān)系;
2. 可觀察者用一個共同的接口來更新觀察者;
3. 觀察者和可觀察者之間用松耦合方式結(jié)合,可觀察者不知道觀察者的細節(jié),只知道觀察者實現(xiàn)了觀察者接口;
4. 使用此模式時,可以從被觀察者處推(push)或拉(pull)數(shù)據(jù);
5. 有多個觀察者時,不可以依賴特定的通知次序;
6. Java有多種觀察者模式的實現(xiàn),包括通用的java.util.Observable;
7. java.util.Observable的實現(xiàn)存在一些問題;
8. 可以考慮自己實現(xiàn)Observable;
9. 觀察者模式有大量的實際應(yīng)用場景,如:JavaBeans等;

3.3 裝飾者模式

<b>裝飾者模式</b> 動態(tài)地將責任附加到對象上。想要擴展功能,裝飾者提供有別于繼承的另一種選擇。


裝飾者模式01.jpg
1. 繼承屬于擴展形式之一,但不見得是達到彈性設(shè)計的最佳方式;
2. 在我們的設(shè)計中,應(yīng)該允許行為可以被擴展,而無須修改現(xiàn)有的代碼;
3. 組合和委托可用于在運行時動態(tài)地加上新的行為;
4. 除了繼承,裝飾者模式也可以讓我們擴展行為;
5. 裝飾者模式意味著一群裝飾者類,這些類用來包裝具體組件;
6. 裝飾者類反映出被裝飾的組件類型(實際上,他們具有相同的類型,都經(jīng)過接口或繼承實現(xiàn));
7. 裝飾者可以在被裝飾者的行為前面與/或后面加上自己的行為,甚至將被裝飾者的行為整個取代掉,而達到特定的目的;
8. 你可以用無數(shù)個裝飾者包裝一個組件;
9. 裝飾者一般對組件的客戶是透明的,除非客戶程序依賴于組件的具體類型;
10. 裝飾者會導(dǎo)致設(shè)計中出現(xiàn)許多小對象,如果過度使用,會讓程序變得很復(fù)雜;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容