1、定義:就是乙個類而言,應該僅有乙個引起它變化的原因
2、自己理解:手機最好只能打**。會計員工就只能幹財務不能又做設計又幹財務。
3、原因:如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當發生變化時,設計會遭受到意想不到的破壞。
4、作用:做到 易維護、易擴充套件、易復用、靈活多樣。
1、定義:是說軟體實體(類、模組、函式等等)應該可以擴充套件,但是不可修改。有兩個特徵:對於擴充套件是開放的,對於更改是封閉的
2、自己的理解:一國兩制政策、考研和求職兩不誤可以同時幹,但是執行的內容不同
3、原因:無論模組是多麼的「封閉」都會存在一些無法對之封閉的變化。既然不可能完全封閉,設計人員必須對於他設計的模組應該對哪種變化封閉做出選擇。他必須先猜測出最可能發生的變化種類,然後構造抽象來隔離那些變化
4、作用:是物件導向設計的核心所在。遵循這個原則可以帶來物件導向技術所聲稱的巨大好處,也就是易維護、易擴充套件、易復用、靈活多樣。開發人員應該僅對過程中呈現出頻繁變化的那部分做出抽象,然而對於應用程式中的每個部分都刻意地進行抽象同樣不是乙個好主意。拒絕不成熟的抽象和抽象本身一樣重要。
1、定義:a、高層模組不應該依賴底層模組。兩個都應該依賴抽象。
b、抽象不應該依賴細節。細節應該依賴抽象。(針對介面程式設計,不要對實現程式設計)
2、自己的理解:主機板——介面——記憶體
(高) (抽象) (低)
3、作用:依賴倒轉其實可以說是物件導向設計的標誌,用哪種語言來編寫程式不重要,如果編寫時考慮的都是如何針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是物件導向的設計,反之那就是過程化的設計了。
1、定義:子型別必須能夠替換掉它們的父型別。
2、自己的理解:孩子都能成為父親,都能替換父型別
3、原因:只有當子類可以替換掉父類,軟體單位的功能不受到影響時,父類才能真正被復用,而子類也能狗夠在父類的基礎上增加新的行為。
4、作用:由於子型別的可替換性才使得使用父類型別的模組在無需修改的情況下就可以擴充套件。
1、定義:如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三者**這個呼叫
2、自己的理解:小菜——it部——小張或者小李
(第三者) (屬於it部)
3、作用:它根本思想就是強調了類之間的松耦合。類之間的耦合越弱,越有利於復用,乙個處在弱耦合的類被修改,不會對有關係的類造成波及。
4、前提:在類的結構設計上,每乙個類都應當盡量降低成員的訪問許可權。
1、定義:聚合表示一種弱的「擁」有關係,體現的是a物件可以包含b物件,但是b物件不是a物件的一部分;合成則是一種強的「擁有」關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期是一樣
2、大雁和翅膀是合成 (整體——部分)、大雁和雁群是聚合
3、作用:優先使用物件的合成/聚合將有助於你保持每乙個類被封裝,並被集中在單個任務上。這樣類和類繼承層次會保持較小規模,並且不太可能增長為不可控制的龐然大物。
設計模式六大原則
0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...
設計模式六大原則
0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...
設計模式六大原則
參考文章 單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領域中的相應職責,或者可以定義為 就乙個類而言,應該只有乙個引起它變化的原因。開閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。...