物件導向的五個設計原則 SOLID

2021-08-20 20:11:45 字數 2022 閱讀 2207

1.    solid

(1)srp(the single responsibility principle)單一責任原則

(2)ocp(the open-closed principle)開放-封閉原則

(3)lsp(the liskov substitution principle)liskov替換原則

(4)isp (the inte***ce segregation principle)介面聚合原則

(5)dip(the dependency inversion principle)依賴轉置原則

2.    詳細介紹:

(1)srp(the single responsibility principle)單一責任原則

responsibility:a reason for change

srp:

-不應有多於乙個的原因使得乙個類發生變化

-乙個類,乙個責任   

如果乙個類包含了多個責任,那麼將引起不良後果

-引入額外的包,佔據資源

-導致頻繁的重新配置和部署

這是最簡單的原則,卻是最難做好的原則

違反srp的案例:

(2)ocp(the open-closed principle)開放-封閉原則

開放和封閉,指的是:

a.    對擴充套件性的開放:

模組的行為應是可擴充套件的,從而該模組可表現出新的行為以滿足需求的變化

b.    對修改的封閉:

模組自身的**是不應被修改的,擴充套件模組的一般途徑是修改內部實現。

關鍵的解決方案:抽象技術,使用繼承(inheritance)和組成(composition)

案例:

(3)lsp(the liskov substitution principle)liskov替換原則

lsp:子型別必須能夠替換其基型別

派生類必須能通過其基類的介面使用,客戶端無需了解二者之間的差異

詳見之前寫的lsp部落格。

(4)isp (the inte***ce segregation principle)介面聚合原則

客戶端不應依賴於它們不需要的方法。

「fat」的介面有很多缺點,不夠聚合。

「fat」介面可分解為多個小的介面,不同的介面向不同的客戶端提供服務,客戶端只訪問

自己所需要的埠。

例如:

又一例項:

(5)dip(the dependency inversion principle)依賴轉置原則

-抽象的模組不應該依賴於具體的模組

-具體應該依賴於抽象

抽象出共同點,然後讓實現細節依賴於抽象,客戶端也使用抽象:

相當於增加了乙個橋梁-介面。

另外:grasp:general responsibility assignment software patterns (principles), 

是關於如何為「類」和「物件」指派「職責」的一系列原則。

物件導向的設計原則五 依賴倒轉原則

動機 在乙個應用程式中,我們有一些實現了基礎的 主要的操作的底層類和一些封裝了複雜邏輯的上層類。實現這種結構的很自然地方式就是,先編寫底層類,完成後再編寫複雜的上層類。因為上層類是由其他東西定義的,所以這看起來是一種很合理的方式。但是這不是乙個靈活的設計,如果我們需要替換乙個底層類時會發生什麼?讓我...

7個物件導向設計原則

物件導向設計原則概述 單一職責原則 開閉原則 黎克特制代換原則 依賴倒轉原則 介面隔離原則 合成復用原則 迪公尺特法則 物件導向設計原則概述 軟體的復用 reuse 或重用擁有眾多優點,比如可以提高軟體的開發效率,提高軟體質量,節約開發成本,恰當的復用還可以改善系統的可維護性。物件導向設計復用的目標...

物件導向的五大設計原則

單一職責原則 乙個類,最好只做一件事,只有乙個引起它的變化。單一職責原則可以看做是低耦合 高內聚在物件導向原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。職責過多,可能引起它變化的原因就越多,這將導致職責依賴,相互之間就產生影響,從而大大損傷其內聚性和耦合度,通常意義下的...