設計模式中總共有23中基本的設計模式,讓我們了解如何去「封裝變化」,「物件間鬆散耦合」,「針對介面程式設計」,從而去設計出易維護、易擴充套件、易復用、靈活性好的程式。不過,也有7種規範我們行為的原則:
一、單一職責原則
1.單一職責原則(srp):就乙個類而言,應該僅有乙個引起它變化的原因。
2.如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力,這種耦合會導致脆弱的設計,當變化發生時,設計會遭到嚴重性的破壞。
3.軟體設計真正要做的許多內容,就是發現職責並把那些職責互相分離。如果你能想到多於乙個動機去改變乙個類,那麼這個類就具備多個職責,這是就應該去分離類的職責。
二、開放封閉原則
1.開放封閉原則(asd):軟體實體(類、模組、函式等等)應該可以擴充套件,但不可以修改。換句話說就是,對於擴充套件是開放的,對於修改是封閉的。
2.在設計出系統後可以保持穩定,從而使得系統可以在第乙個版本以後(以之前版本為基礎)不斷推出新的版本。
3.無論模組是多麼的「封閉」,都會存在一些無法對之封閉的變化。這就要求設計人員尋找到最有可能變化的位置,然後構造抽象來隔離那些變化。
4.對於應用程式中的每個部分都刻意的進行抽象並不是乙個好的主意,拒絕不成熟的抽象和抽象本身一樣重要。
三、黎克特制代換原則
1.黎克特制代換原則(lsp):子型別必須能替換掉它們的父型別(在軟體裡,把父類都替換為它的子類,程式的行為沒有變化)——使開放封閉稱為可能。
2.子類可以替換掉父類,軟體單位的功能不受到影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。
四、依賴倒轉原則
1.依賴倒轉原則(asd):高層模組不應該依賴於底層模組,兩個都應該依賴於抽象。抽象不應該依賴於細節,細節應該依賴於抽象。(依賴於抽象,而不依賴於具體)
2.針對介面程式設計,不要對實現程式設計。
3.依賴倒轉可以說是物件導向的標誌,如果編寫時考慮的都是如何針對抽象變成而不是針對細節程式設計,那這就是物件導向的設計。
五、迪公尺特法則
1.迪公尺特法則(lod):如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的方法的話,可以通過第三者**這個呼叫。
2.根本思想是強調類之間的松耦合。
3.類之間的耦合越弱,越有利於復用,乙個處於弱耦合的類被修改,不會對有關係的類造成波及。
六、合成聚合原則
1.合成聚合原則(carp):在乙個新的物件裡面使用已有的物件,使之成為新物件的一部分,新的物件通過向這些物件的委派達到復用已有功能的目的。
2.新物件對組成物件的內部實現不知,每個新物件可以將功能聚集在乙個點上,可以在執行時動態更新,動態的引用與組成物件型別相同的物件。
3.要盡量使用合成聚合,而不是繼承關係達到復用的目的。
七、介面隔離原則
1.介面隔離原則(isp):使用多個專門的介面比使用單一的總介面要好。
2.乙個介面代表乙個角色,不應當將不同的角色都交給乙個介面。沒有關係的介面合併在一起,形成乙個臃腫的大介面,這是對角色和介面的汙染。
3.乙個類對另外乙個類的依賴性應當是建立在最小的介面上。
設計模式 物件導向設計原則
軟體的可維護性和可複製性是兩個非常重要的軟體質量屬性 物件導向物件設計原則是設計模式學習的基礎。每乙個設計模式都符合乙個或者多個物件導向設計原則 單一職責原則是最簡單的物件導向設計原則,它用於控制類的粒度大小 單一設計原則 乙個物件應該只包含單一的職責,並且該職責被完整的封裝在乙個類裡 這也意味著 ...
設計模式 物件導向設計原則
物件導向設計原則為支援可維護性復用而誕生,這些原則蘊含在很多設計模式中,它們是從許多設計方案中總結出的指導性原則。最常見的7種物件導向設計原則如下表所示 使用頻率 單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領域中的相應職責 開閉原則 o...
設計模式 物件導向設計原則
世界是具體的,認知是抽象的。像自然界中的生物 植物 動物乙個個名詞,就是對一系列具體個體抽象出來的稱謂,而魚 老虎 樹等就是乙個個實在的具體。哦,也許你會說,樹也是對一系列具體個體的抽象出來的稱謂,對也不對,對是因為樹確實是一系列具體個體的抽象稱謂,不對是因為照這個邏輯下去,就會陷入死迴圈,直到小到...