設計模式原則詳解

2021-04-26 15:29:31 字數 2695 閱讀 1495

這篇文章,不需要你一次就看懂,如果你真的能一次都看懂,我想設計

模式對於你來說已經沒什麼難度了..因為設計模式就是要體現這些原則的,你可以把設計原則看做是一門語言,設計模式是由這些語言編碼的程式..你既然已經明白,精通了語言,剩下的編碼自然是很簡單的事情,編碼的越多則經驗越多,經驗越多則對原則的理解就越深...這是乙個學習

領悟的過程..s-uy t8s;q0

itlab部落格.e#f@zr o m o

我希望這篇文章能幫助新人感受到設計模式的樂趣,避免重複編碼....減少勞動量..如果你能在用心靜靜的體會文章的每個字,每段話的意思,這樣可以避免走很多彎路...我以前學習設計模式的時候,就是因為忽略了原則,憑著感覺,看著書來學習設計模式,結果就是知其然而不知其所以然....如果你是初學設計模式,再了解了oop的三大原則(封套,繼承,多型)之後,請反覆的結合原則,來學習設計模式..這樣可以達到事半功倍的效果...

/]w8ip;rt5hs$}0

itlab部落格7g3p c#l0`xhb.u

設計模式的核心原則是:"開-閉"原則(  open - closed principle 縮寫:ocp  ),一切的一切都是圍繞著"開-閉"原則展開的..itlab部落格,c s~abgx+pyz&b

意思是,在乙個系統中,對於擴充套件是開放的,對於修改是關閉的,乙個好的系統是在不修改源**

的情況下,可以擴充套件你的功能..而實現開閉原則的關鍵就是抽象化.itlab部落格s j cu o gj.a

在"開-閉"原則中,不允許修改的是抽象的類或者介面,允許擴充套件的是具體的實現類,抽象類和介面在"開-閉"原則中扮演著極其重要的角色..即要預知可能變化的需求.又預見所有可能已知的擴充套件..所以在這裡"抽象化"是關鍵!!!itlab部落格w fk)z@g8z-qb

*a(c [7ad s ks0

可變性的封閉原則:找到系統的可變因素,將它封裝起來..這是對 "開-閉"原則最好的實現..不要把你的可變因素放在多個類中,或者散落在程式的各個角落..你應該將可變的因素,封套起來..並且切忌不要把所用的可變因素封套在一起..最好的解決辦法是,分塊封套你的可變因素!!避免超大類,超長類,超長方法

的出現!!給你的程式增加藝術氣息,將程式藝術化是我們的目標!!itlab部落格p a%mw+tb_

o#q$m,mf0

黎克特制代換原則:任何基類可以出現的地方,子類也可以出現..如果你通讀過itlab部落格+hg_8mup

+u ew'e^~ zn;v8~9/0

依賴倒轉原則:要依賴抽象,而不要依賴具體的實現..如果說開閉原則是目標,依賴倒轉原則是到達"開閉"原則的手段..如果要達到最好的"開閉"原則,就要盡量的遵守依賴倒轉原則..可以說依賴倒轉原則是對" 抽象化"的最好規範!!我個人感覺,依賴倒轉原則也是黎克特制代換原則的補充..你理解了黎克特制代換原則,再來理解依賴倒轉原則應該是很容易的..itlab部落格lb8j4t e9im

合成/聚合原則:要盡量使用合成/聚合原則,而不是繼承關係達到軟體復用的目的..此原則和黎克特制代換原則氏相輔相成的,兩者都是具體實現"開-閉"原則的規範..違反這一原則:就無法實現"開-閉"原則..先來看看什麼是合成,什麼是聚合.

e3n6k0

聚合:聚合是比合成關係的一種更強的依賴關係,聚合是乙個整體對個體的部分,例如,乙個賓士s360汽車,對賓士s360引擎,賓士s360輪胎的關係..這些關係就是帶有聚合性質的..因為賓士s360引擎和賓士s360輪胎他們只能被賓士s360汽車所用,離開了賓士s360汽車,它們就失去了存在的意義..在我們的設計中,這樣的關係不應該頻繁出現..這樣會增大設計的耦合度..itlab部落格'g6h5]b7qj9dz2a

明白了合成和聚合關係,再來理解合成/聚合原則應該就清楚了..要避免在系統設計中出現,乙個類的繼承層次超過3次..如果這樣的話,可以考慮重構你的**,或者重新設計結構..當然最好的辦法就是考慮使用合成/聚合原則...

(f0on6t.qvl"_0

itlab部落格nt'ffn

迪公尺特法則:系統中的類,盡量不要與其他類互相作用,減少類之間的耦合度, 因為在你的系統中,擴充套件的時候,你可能需要修改這些類,而類與類之間的關係,決定了修改的複雜度,相互作用越多,則修改難度就越大,反之,如果相互作用的越小,則修改起來的難度就越小..例如a類依賴b類,則b類依賴c類,當你在修改a類的時候,你要考慮b類是否會受到影響,而b類的影響是否又會影響到c 類..如果此時c類再依賴d類的話,呵呵,我想這樣的修改有的受了..

.de5mh#/$[ ja/b3p0

:n j v"l%u s/m/n0

介面隔離法則:這個法則與迪公尺特法則是相通的,迪公尺特法則是目的,而介面隔離法則是對迪公尺特法則的規範..為了做到盡可能小的耦合性,我們需要使用介面來規範類,用介面來約束類.要達到迪公尺特法則的要求,最好就是實現介面隔離法則,實現介面隔離法則,你也就滿足了迪公尺特法則...

c)y2z+f6h%]/jh~z0

itlab部落格v {k0{ u h&o_.l[!t

itlab部落格3i.kh6w@5v/x

如果你能看這裡,說明你已經對這些原則了有了感性的認識..這些原則是設計模式的核心,如果不能充分理解這些原則,是很難理解好設計模式的..

nhk![9/5rg0

itlab部落格!d&ah:hek

如果第一遍看不懂,沒關係,請反覆揣摩,細讀每個字,每句話..sfwy"|2l+z7nc0

設計模式原則詳解

設計模式原則詳解 這篇文章,不需要你一次就看懂,如果你真的能一次都看懂,我想設計模式對於你來說已經沒什麼難度了.因為設計模式就是要體現這些原則的,你可以把設計原則看做是一門語言,設計模式是由這些語言編碼的程式.你既然已經明白,精通了語言,剩下的編碼自然是很簡單的事情,編碼的越多則經驗越多,經驗越多則...

設計模式原則詳解

設計模式原則詳解 這篇文章 不需要你一次就看懂 如果你真的能一次都看懂 我想設計模式對於你來說已經沒什麼難度了 因為設計模式就是要體現這些原則的 你可以把設計原則看做是一門語言 設計模式是由這些語言編碼的程式 你既然已經明白 精通了語言 剩下的編碼自然是很簡單的事情 編碼的越多則經驗越多 經驗越多則...

設計模式原則詳解

這篇文章,不需要你一次就看懂,如果你真的能一次都看懂,我想設計模式對於你來說已經沒什麼難度了.因為設計模式就是要體現這些原則的,你可以把設計原則看做是一門語言,設計模式是由這些語言編碼的程式.你既然已經明白,精通了語言,剩下的編碼自然是很簡單的事情,編碼的越多則經驗越多,經驗越多則對原則的理解就越深...