物件導向設計模式總結

2021-06-13 09:29:39 字數 1238 閱讀 6932

從去年7月份開始學習設計模式一直到今年3月底,4月初,共8個多月,想把自己明白的總結下來,也希望給初學的朋友們一點點東西。

記得去年9月份時一位it大佬問我設計模式你用過哪些,我說好像都很少用(其實是自己不懂),如果我現在再回答問題就會是基本都在用,其實在一些前輩的程式裡,即使他們沒有學習設計模式,也會看到很多設計模式的影子,下面我就來簡單介紹一下

23種設計模式首先其實是圍繞5個設計原則來的,這5個設計原則充分體現了物件導向的精髓

一:單一職責原則,故名思意就是只乙個原則,定義:就乙個類而言,應該僅有乙個引起它變化的原因。其實就好比我們現在用的手機和數位相機,手機是乙個類(可以拍照哦),數位相機是乙個類,不管現在手機拍照有多好都不可能趕上數位相機,而且修乙個照相功能就得拆開整個手機,數位相機的好就是因為它只有這乙個「職責」。

這就要考驗我們的「預知」能力了,我們要提前**哪些模組可能是易變的(比如:介面),哪些應該是不變的,然後把這些不變的地方構造抽象隔離出來,讓那些易變的來繼承它,這樣我們公升級是只需要增加乙個繼承自抽象類的子類就可以了,這樣一來我們既不會害怕與之前的相容性,又實現了拓展

三:黎克特制代換原則,看起來很英倫範兒啊,呵呵,黎克特制代換原則是barbara liskov這個女人在2023年發表的,它在數學上也有用處,簡單意思就是繼承自父類的子類在使用中應當可以完全代替父類的功能,定義:子型別必須能夠替換掉他們的父型別。也就是說,只有當子類可以替換父類,且軟體功能不收影響時才是對的,因為只有這樣繼承的復用父類效果才體現出來,否則就得看看是不是繼承錯了,或者繼承不合理。

四:依賴倒轉原則,意思就是我們應該針對類對外的函式介面去實現,而不是一味得去實現這個類要表達的功能,比如電腦,如果我們直接就是想造乙個可以聯網,計算,顯示的乙個整體的電腦也是可以的,不過如果顯示螢幕壞了,那就相當於這個電腦都壞了,對吧。可以如果我們現在只是把他們乙個個分離出來,每個部件(類)都有對外的介面(類成員函式),那麼我們就只需要管理這些介面之間的處理就可以了,也就是說,螢幕類壞了或者是要公升級更好的我們只需要找他們的繼承類來替換就好了,因為他們介面一樣,所以就可以很好的「組合」上去,定義:高層模組不應該依賴底層模組,兩個都應該依賴抽象,抽象不應該依賴細節,細節應該依賴抽象。

五:迪公尺特法則:定義:如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用,如果其中乙個類需要呼叫乙個不應當直接發生關係類的方法的話,可以通過第三者來**這個呼叫。比如:我們(第乙個類)要用電腦主機(第二個類)的聯網功能,那麼我們就可以通過螢幕(第三者)來呼叫即可。

類之間的耦合越鬆,越有利於復用和維護,乙個處於弱耦合的類被修改,就不會波及到其它類了

物件導向設計模式總結一

物件導向設計的優點 物件導向設計的優點 可維護 可擴充套件 可復用 靈活性好。目標 物件導向設計的目標 高內聚,低耦合。設計模式分類 物件導向常見的23種設計模式主要分為 建立型 結構型和行為型。物件導向設計原則 1.單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。1.1 如果你能夠想到多...

大話設計模式 物件導向基礎 總結

11.集合 12.泛型 物件 一切事務皆物件,即所有的東西都是物件,物件就是可以看到,感覺到,聽到,觸控到,嚐到,或問道的東西。準確來說,物件是乙個自包含的實體,用一組可識別的特性和行為來標識。類 就是具有相同屬性和功能的物件的抽象的集合。class是表示定義類的關鍵字。注意 第一,類名稱首字母要大...

物件導向 設計模式

提到設計模式,不得不感謝gof gang of four,四人組 他們1995年出版的 設計模式 一書,第一次將設計模式提公升到理論高度,並將之規範化。書中一共總結了23種基本的設計模式。而這23中設計模式幾乎涵蓋了物件導向設計過程中所有問題的解決方案。書中提到的23種設計模式分別是 1.單例模式 ...