OOP程式設計原則與設計模式(1)

2021-03-31 08:56:31 字數 1932 閱讀 2611

johnny.deng

pbp/obp/oop的特徵

pbp(基於過程):函式、域與生命週期的概念、函式過載、函式模板、異常處理、范型演算法。

obp(基於物件):類(介面)、類的生命週期、類模板。

oop(物件導向):繼承、多型。

三個概念步步深入,後者包括前者。其目的是實現軟體開發的可重用性,解決軟體危機(軟體工程思想未引入之前)。

oop不可避免設計原則的發展與設計模式的產生,這是oop獨具的特徵決定的(正如前面所說,特徵的產生是由其產生目的決定的)。

oop的方**(高內聚、低耦合、易復用)

oop的方**--如何實現基於oop特徵的抽象?

ocp(open-closed principle):軟體實體應該擴充套件開放、修改封閉。

實現:合理劃分構件,一種可變性不應當散落在**的很多角落裡,而應當被封裝到乙個物件裡;一種可變性不應當與另乙個可變性混合在一

起。dip(dependency inversion principle):依賴的倒置,擺脫面向過程程式設計思想中高層模組依賴於低層實現,抽象依賴於具體細節。oop中要做到

的是,高層模組不依賴於低層模組實現,二者都依賴於抽象;抽象不依賴於具體實現細節,細節依賴於抽象。

實現:應該通過抽象耦合的方式,使具體類最大可能的僅與其抽象類(介面)發生耦合;程式在需要引用乙個物件時,應當盡可能的使用抽象類

型作為變數的靜態型別,這就是針對介面程式設計的含義。

lsp(liskov substitution principle):繼承思想的基礎。「只有當衍生類可以替換掉基類,軟體單位的功能不會受到影響時,基類才真正被復

用,而衍生類也才能夠在基類的基礎上增加新的行為。」

isp(inte***ce insolation principle):介面功能單一,避免介面汙染。

實現:乙個類對另外乙個類的依賴性應當是建立在最小的介面上的。使用多個專門的介面比使用單一的總介面要好。

srp(single resposibility principle):就乙個類而言,應該僅有乙個引起它變化的原因。 如果乙個類的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會抑止這個類完成其他職責的能力。

carp(***posite/aggregate reuse principle):設計模式告訴我們物件委託優於類繼承,從uml的角度講,就是關聯關係由於繼承關係。盡量使用合成/聚合、盡量不使用繼承。

實現:在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分,以整合其功能。

lod(law of demeter):就是說乙個物件應當對其他物件盡可能少的了解。即只直接與朋友通訊,或者通過朋友與陌生人通訊。

朋友的定義(或關係):

(1)當前物件本身。(2)以參量的形式傳入到當前物件方法中的物件。(3)當前物件的例項變數直接引用的物件。(4)當前物件的例項變

量如果是乙個聚集,那麼聚集中的元素也都是朋友。(5)當前物件所建立的物件。

實現:(1)在類的劃分上,應當建立有弱耦合的類。類之間的耦合越弱,就越有利於復用。(2)在類的結構設計上,每乙個類都應當盡量降

低成員的訪問許可權。乙個類不應當public自己的屬性,而應當提供取值和賦值的方法讓外界間接訪問自己的屬性。(3)在類的設計上,只要有

可能,乙個類應當設計成不變類。(4)在對其它物件的引用上,乙個類對其它物件的引用應該降到最低。(5)盡量限制區域性變數的有效範圍.

設計模式

設計模式是oop設計原則的細化,粒度有粗有細,應用可大可小。

(待續)

OOP設計原則

乙個類或者模組,應該僅有乙個引起其變化的原因。如果乙個類承擔的職責過多就等於將這些職責耦合在一起,乙個職責的變化就有可能影響其他職責的能力。缺點 會造成類的數量增多。破壞了封裝的原則 若將目標類中將含有私有資料訪問邏輯的業務行為分離出去,則會造成外部類或方法訪問目標類的私有資料,破壞封裝的特性。例子...

設計模式(3) OOP原則

從最開始接觸的python到現在的c 這些都是物件導向的程式語言,那麼什麼是物件導向程式設計呢?在最開始學習python的時候,一直都在學習基本的資料結構,依然是面向過程程式設計,很難對程式語言有較深的理解,在學習c 的時候,我漸漸開始接觸類 介面等概念,然而真正開始理解並應用這些概念可花費了不少時...

設計模式 1 原則

package cn.riversky 物件導向設計原則 1單一職責原則 乙個類只負責乙個功能領域中的相應職責 2開閉原則 軟體實體應對擴充套件開放,而對修改關閉 3 黎克特制替換原則 所有引用基類對應的地方能夠透明地使用其子類的物件。4 依賴倒轉原則 抽象不應該依賴於細節,細節應該依賴於抽象 5 ...