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

1. OO基礎(chǔ)

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

2. OO原則

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

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

3.1 策略模式

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


策略模式01.png

3.2 觀察者模式

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


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

3.3 裝飾者模式

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


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

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

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