OO設計原則總結

2021-07-04 05:53:35 字數 2210 閱讀 5267

oo設計原則:

在程式設計領域,物件導向設計的設計原則有封裝變化,面向介面而不是實現,優先使用組合而非繼承,具體分為五個基本原則:單一功能原則srp,開閉原則ocp,黎克特制替換原則lsp,介面隔離原則isp,依賴反轉原則dip.

1>單一功能原則srp:

單一功能原則srp規定每個類都應該有乙個單一的功能,並且該功能應該有這個類完全封裝起來,所以這個類的服務都應該嚴密的和該功能平行(功能平行意味著沒有依賴).

2>開閉原則ocp:

開閉原則ocp規定軟體中的物件(類,模組,函式等)應該對於擴充套件是開放的,但是對於修改是封閉的,這意味著乙個實體是允許在不改變它的源**的前提下變更它的行為. 開閉原則的命名被應用在兩種方式上.這兩種方式都是用了繼承來解決問題,但是它們的目的,技術以及結果是不同的. 

2.1>梅耶開閉原則:

該原則規定乙個類的實現只應該因錯誤而修改,新的或者改變的特性應該通過新建不同的類實現.新建的類可以通過繼承的方式來重用原類的**.衍生的子類可以或不可以擁有和原類相同的介面.

梅耶的定義提倡實現繼承.具體實現可以通過繼承的方式重用,但是介面規格不必如此.已存在的實現對於修改是封閉的,但是新的實現不必實現原有的介面.

2.2>多型開閉原則:

該原則用於抽象化介面的使用,在這中間實現可以被改變,多種實現可以被建立,並且多型化得替換不同的實現.

相比梅耶的使用方式,多型開閉原則的定義倡導對抽象基類的繼承.介面規約可以通過繼承來重用,但是實現不必重用.與存在的介面對於修改時封閉的,並且新的實現

必須,至少,實現那個介面. 

3>黎克特制替換原則lsp:

該原則是對子型別的特別定義,派生類物件能夠替換其基類物件被使用.

4>介面隔離原則isp:

多個專門的介面優於單一的總介面.

如果乙個類向多個客戶端提供服務,與其在這個類中載入所有的服務方法,不如為每個特定的客戶端建立乙個特定的介面,然後將該類多繼承與這寫介面.

圖4.1展示了傳統的設計所有乙個服務類載入的客戶端所需要的所有方法.這樣做破壞了ocp原則,因為如果要條件新的方法,必須重新修改這個服務類.

圖4.1

圖4.2展示了符合oo設計原則的設計,如果有新的型別的客戶端,那麼只需要為該型別的客戶端派生新的介面即可.

圖4.2

isp原則不是要求每個使用某種服務的類建立乙個特定的介面然後服務類繼承與這個介面,而是客戶端應該按照它們的型別被分類,然後對於每個型別建立介面.如果兩個或者多個客戶端型別需要同乙個方法,那麼這個方法應該被加入到每乙個介面之中.這是合理的.

5>依賴反轉dip:

該原則指定了一種特定的解耦(傳統的依賴關係建立在高層次上,而具體的策略設定則應用在低層次的模組上)形式.在這種形式下,為了使得高層次的模組不依賴與低層次的模組的實現細節的目的,依賴模組被顛倒了.該原則規定:

1.高層次的模組不應該依賴於低層次的模組,兩者都應該依賴於抽象介面.

2.抽象介面不應該依賴於具體實現.而具體實現則應該依賴於抽象介面. 

抽象不應該依賴於細節,細節應該依賴於抽象,另一種表述:要針對介面程式設計,不要針對實現程式設計.依賴倒置式依賴於介面或者抽象函式和類而不是具體的函式和類.

dip原則的動機之一就是阻止依賴於可變的模組,dip原則假設具體的實現都是可變的,而抽象的介面很少變化.而且抽象的介面代表了設計之中能夠被擴充套件並且是不可修改的部分(ocp原則).

傳統的應用架構中(圖5.1),低層次的元件設計被高層次的元件使用,這一點提供了逐步構建乙個複雜系統的可能.在這種結構下,高層次的元件直接依賴於低層次的元件去實現一些任務.這種對於低層次元件的依賴限制了重用高層次元件的可能性.

圖5.1

依賴反轉原則(圖5.2所示結構)的目的在於把高層次元件從低層次元件中解耦出來,這樣使得重用不同低層元件實現變得可能.把高層元件和低層元件分劃到不同的包/庫(這些包/庫中定義了高層元件所必須的行為和服務介面,並且存在高層元件的包)中的方式促進了這種解耦.由低層元件對於高層元件介面的具體實現要求低層元件包的編譯是依賴於高層元件的,因此顛倒了傳統的依賴關係.眾多的設計模式,比如,外掛程式,服務定位器或者依賴反轉,則被用來在執行時把指定的低層元件實現提供給高層元件.

圖5.2

應用依賴反轉原則同樣被認為是應用了介面卡模式,例如:高層的類定義了它自己的介面卡介面(高層類所依賴的抽象介面).被適配的物件同樣依賴於介面卡介面的抽象,同時它的實現則可以使用它自身所在低層模組的**.通過這種方式,高層元件則不依賴於低層元件,因為它(高層元件)僅間接地通過呼叫介面卡介面多型方法的方式使用了底層元件通過介面卡介面,在這些多型方法則是被適配物件以及它的低層模組所實現的.

OO 設計原則

msil msil是.net framework中最重要的概念之一。通過msil可以預知不同.net語言的執行效率應該是接近的。通過msil匯程式設計序 ilasm.exe 和msil反匯程式設計序 dilasm.exe 可以觀察.net應用的內部構造,因此也可以用於.net應用 元件的破解。ild...

OO設計原則

1.srp single responsibility principle 單一職責原則 單一職責原則強調乙個類只有乙個使它改變的原因.如果乙個類擁有n個職能,則它應該劃分為n個類.2.ocp closed for modification open for extension 開閉原則 開閉原則強...

OO的設計原則

從網上找了一些資料覺得這個還可以 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原...