設計模式 六大原則

2021-07-24 18:22:29 字數 1316 閱讀 3647

學習設計模式現在已經是第二遍了,第一遍的時候是快速閱讀把整本書過了一遍,第一遍剛開始的時候接觸到的設計模式還比較少,慢慢的後面的東西越來越多就開始有點記混了。雖然這些模式的名字和內容記得有點亂,但是經過時間的過濾和思考腦子裡還剩著一些關於設計模式的一些原則。

開閉原則是目標,黎克特制代換原則是基礎,依賴倒轉原則是手段,它們相輔相成,相互補充,目標一致,只是分析問題時所站角度不同而已。

這幾個原則需要在設計程式過程中靈活應用,過度或不足都不能算是優秀的設計。

定義:就乙個類而言,應該僅有乙個引起他變化的原因。

通俗解釋:乙個類或乙個介面最好只做一件事,當發生變化時,只受到單一的影響。ps:乙個類不能太「累」!

原理:如果乙個類承擔責任過多,就等於把職責耦合在一起,乙個職責變化可能會讓這個類其他職責受到影響;它的本質是解除耦合,增加內聚。

解決辦法:把不同職責封裝到不同的類或模組裡。

定義:軟體實體(類,模組,函式等)應該可以擴充套件,但是不可以修改。

通俗解釋:更改需求的時候應該是去增加**來實現更改,而不是修改已有的**。

實現方法:建立抽象隔離同類發生的變化

優點:可維護、可擴充套件、可復用、靈活性好。

注意:不需要將程式中每個部分都刻意抽象,拒絕不成熟的抽象和抽象本身一樣重要。

定義:抽象不應依賴細節,細節應該依賴於抽象。

通俗解釋:要針對介面程式設計,而不是針對實現程式設計

優點:建立可復用的框架,易於維護

核心:面向介面程式設計

定義:子型別必須能夠替換掉它們的父型別。乙個軟體實體如果使用的是乙個父類,那麼一定適用於其子類,而且它察覺不出父類和子類物件的區別。

通俗解釋:在軟體裡面把父類都替換為子類,對程式行為沒有影響

優點:使得使用父類型別的模組在無需修改的情況下就可以擴充套件,使開放封閉原則成為可能。

定義:盡量使用合成/聚合,盡量不要使用類繼承

通俗解釋:

優點: 有助於保持每個類被封裝,並被集中在單個任務上。這樣類和類繼承層級會比較少。

定義:如果兩個類之間不必直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法,可以通過第三者**這個呼叫。

目的:每個類都應當盡量降低成員的訪問許可權,強調了類之間的松耦合

設計模式就相當於我們蓋房子,不同的模式有不同的功能。剛開始蓋房子的時候哪有那麼多的建築模型,哪有那麼多的建築材料,都是不斷的蓋房,一群人發現這樣做比較方便,慢慢總結出來的。設計模式也是一樣,是很多優秀程式設計師經過多年實踐總結出來的智慧型結晶。設計模式不侷限於程式語言,它是一種程式設計思想。

我們學習設計模式一定要多動手,多思考,多比較,既要站在巨人肩膀上,也要把行動落實下來。

設計模式六大原則

0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...

設計模式六大原則

0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...

設計模式六大原則

參考文章 單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領域中的相應職責,或者可以定義為 就乙個類而言,應該只有乙個引起它變化的原因。開閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。...