引言:讓我們重溫經典,致敬經典
開放封閉原則:對擴充套件是開放的,對修改是關閉的
做到這個在剛開始的時候是不容易的,在剛開始是不會變化的,當發生變化的時候,我們應該建立抽象來隔離以後發生的同類變化。
舉個栗子來解讀上面這句話:
好比有個人,他剛開始會的技能只有唱歌,後來他又會了跳舞,再後來又會了寫bug再後來又會了。。。此時我們應該把這個技能抽象出來
**:
1package
com.dzf.designtest;23
/**4* 5
* 開放封閉原則**演示6*
7* @author
dingzf
8* @date 2018/3/30
9* @time 23:34
10*/
11public
class
opencloseprinciple 24}
2526
/**27
* 剛開始類是這樣的,第一版**
28*/
29class
person36}
3738
/**39
* 第二版**,我們發現這個我們違反了開發封閉原則,我們就把變化的抽象出來
40*/
41class
person249}
5051
/**52
* 第三版
53*/
54class
person3
6061
public
void
setskill(skill skill)
6465
public
void
shwo()69}
70}71abstract
class
skill
74class skillimpl extends
skill
80 }
依賴倒置原則:高層模組不能依賴低層模組,兩個都應該依賴抽象,抽象不應該依賴細節,細節應該依賴抽象
解釋下,這個主要是為了降低耦合性,上面這句說我們可以用我們常用的service層和dao層來說明,高層不應該依賴第層,是說service層不應該依賴dao層,而都依賴介面,我們一般都會定義service層的介面和dao層的介面。抽象不應該依賴細節,細節應該依賴抽象,就是說要針對介面程式設計不要針對實現程式設計,好比我們service要呼叫dao層,我們要依賴的是dao層介面,而不是dao層的實現類,我們針對的是對介面,而不是針對細節,這樣做我們可以更好的擴充套件。
職責單一原則:說乙個類應該只有一種引起它變化的原因。從子面上理解,就是就專注幹一件事,其實這些都是為了低耦合的。
黎克特制替換原則:說子型別必須能夠替換掉他們的父型別。正是由於這個原則,才使得使用父型別的模組無需修改的情況下就可以擴充套件。不然還談什麼開放封閉啊,依賴倒置啊。這個是基礎。
大話設計模式之物件導向基礎
a.2 類與例項 物件是乙個自包含的實體,用一組可識別的特性和行為來標識。物件導向程式設計 object oriented programming 類就是具有相同的屬性和功能的物件的抽象的集合。例項,就是乙個真實的物件。例項化就是建立物件的過程,使用new關鍵字來建立。a.3 構造方法 構造方法,又...
設計模式幾大原則
談到設計模式,不能不說一下grasp 職責分配原則 這個比模式更重要.我將再後邊接著來分析.下面我來分析一下設計模式原則,以及在設計模式中的體現.主要參考 程杰 大話設計模組 這裡用dh代替 和justin tech 的部落格.一 設計模式的核心原則是 開 閉 原則 open closed prin...
設計模式幾大原則
談到設計模式,不能不說一下grasp 職責分配原則 這個比模式更重要.我將再後邊接著來分析.下面我來分析一下設計模式原則,以及在設計模式中的體現.主要參考 程杰 大話設計模組 這裡用dh代替 和justin tech 的部落格.一 設計模式的核心原則是 開 閉 原則 open closed prin...