最近剛把《大話設計模式》看完,感覺這本書講的還是很生動的。下面的幾篇博客我將對其中的23種設計模式進行詳細講解,這篇博客先簡單列舉一下23種設計模式的名字以及我對六大基本原則的簡單理解。
創建型模式:
工廠方法模式
抽象工廠模式
原型模式
建造者模式
單例模式
結構型模式:
裝飾模式
代理模式
適配器模式
享元模式
外觀模式
組合模式
橋接模式
行爲型模式:
策略模式
模板方法模式
觀察者模式
狀態模式
備忘錄模式
迭代器模式
命令模式
職責鏈模式
中介者模式
解釋器模式
訪問者模式
六大原則:
1、單一職責原則:書上比較官方的說法是 “就一個類而言,應該只有一個引起他變化的原因。”。其實直白點說就是一個類的功能儘量簡單,避免一個類中封裝過多的功能方法,在設計類的時候避免讓它太過龐大。
2、開閉原則:對擴展開放,對修改關閉。也就是說,當需求變更的時候,儘量不要去修改原有代碼,而是去增加新的代碼。
3、里氏代換原則:在程序中,子類可以替換掉父類並且不會對程序的運行結果造成影響。這裏一個比較典型的例子就是鴕鳥是鳥嗎?在生物學中,鴕鳥是鳥的一種,但是在面向對象的世界裏,鴕鳥不是鳥。因爲如果把鳥看成一個類的話,鳥一定會有一個飛的方法,而鴕鳥不會飛,因此鴕鳥不能夠繼承鳥類。
4、依賴倒置原則:抽象不依賴細節,細節依賴抽象。其實這也就是讓我們在程序開發時,面對接口編程而不是實現。
5、合成聚合複用原則:要理解這個原則首先要明白合成和聚合的概念。舉個栗子,大雁和翅膀的生命週期是一樣的,因此大雁和翅膀屬於合成關係。而雁羣和大雁則是一種聚合關係。當我們可以使用合成或者聚合的時候,就儘量不要使用繼承了,這樣其實也是減少了類之間的耦合,避免一個類因爲多層繼承而顯得很龐大。
6、迪米特法則(最少知道原則):如果兩個類不必彼此直接通訊,那麼這兩個類就不應該直接發生作用。這就要求我們在設計類的時候,儘量降低類的成員的訪問權限。它的根本思想其實也是鬆耦合。