設計模式之六大原則

2021-08-16 16:18:25 字數 1601 閱讀 9708

單一職責原則

單一職責原則(srp):乙個類而言,有且只有乙個引起它變化的原因。

例子:攝像機和手機相比,攝像機攝像的職責單一,攝像效果清晰;

程式設計時要做到單一職責,這樣的**易維護、擴充套件、復用、靈活多樣;

開放——封閉原則

開放——封閉原則:軟體實體(類、模組、函式等)可以擴充套件,但是不可修改;

對於擴充套件開放,對於更改封閉;封閉:編寫**時建立抽象來隔離發生的相同類的變化;

例子:香港澳門回歸採用一國兩制;

乙個國家,兩種制度,社會主義制度不能修改,但是香港可以採用其制度繼續管理;同樣軟體設計模式中,不能修改,但是可以擴充套件。

軟體設計要容易維護,就要多擴充套件,少修改。

如果想加入乘除法等新功能,就不需要去更改client以及加減法的類,只需要增加乘法和除法子類就行;即面對需求,對程式的改動是通過增加新**進行的,而不是更改現有的**:開放——封閉原則的核心。

依賴倒轉原則

高層模組不應該以來低層模組,兩個都應該以來抽象;

抽象不應該以來細節,細節應該依賴抽象;

都依賴的是抽象;

例子:主機板、cpu、記憶體、硬碟等針對介面程式設計,不對實現程式設計;

做專案的時候訪問資料庫,將資料庫**寫成函式,做新專案時去呼叫這些函式;

黎克特制代換原則

黎克特制代換原則(lsp):子型別必須能夠替換掉它們的父型別;

軟體設計中把父類都替換成子類,程式的行為不能發生變化;子類替換掉父類,軟體單位功能不受到影響,父類才能夠得到真正的復用。

黎克特制代換原則支撐了開放——封閉原則;

動物 animal =new 貓();

animal.吃();

animal.喝();

animal.跑();

animal.叫();

舉例說明:

貓繼承動物類,以動物的身份擁有吃喝跑叫等行為,如果狗、牛、羊也想擁有類的行為,只需要更改例項化就行了。

迪公尺特法則

迪公尺特法則(lod)如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。其中乙個類需要呼叫另乙個類的某乙個方法,可以直接通過第三者**這個呼叫;

例子:無熟人難辦事,辦公找it部比找某個具體的人(小張、小李)辦事更加方便;

it部代表抽象類或介面,小張小李代表具體的類;

迪公尺特法則強調在類的結構設計上,每乙個類都應當盡量降低成員的訪問許可權,根本思想強調了類之間的松耦合;

合成——聚合復用原則

合成——聚合復用原則:盡量使用合成——聚合,盡量不要使用類繼承;

大雁和雁群是聚合關係,大雁和翅膀是組合關係;

設計模式之六大原則

無規矩不成方圓,同樣的設計模式也有其內定的一些規則,這些規則使得我們更加方面的使用設計模式的各種模式。以下簡介六個原則 1 單一職責原則 定義 就乙個類而言,應該僅有乙個引起它變化的原因。解釋 如果乙個類承擔的職責過多,則就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責...

設計模式之 六大原則

設計模式中,有六大經典的原則,以下是本人在學習過程中總結的,學習過程中參考了 大話設計模式 這本書,以下為個人見解,如有不當,請大家指出。以便幫助後學習的朋友更簡單的理解和學習。1 單一職責原則 single responsibility principle 顧名思義,單一職責,就是讓系統中的每個類...

設計模式之六大原則

設計模式 6大原則 概念 就乙個類而言,應該僅有乙個引起它變化的原因。解釋 所謂的單一職責,就是說乙個類能完成的功能只有乙個,如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。自我感覺乙個類就跟乙個人一樣,乙個人的精力是有限的,如果擔任過...