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 或重用擁有眾多優點,比如可以提高軟體的開發效率,提高軟體質量,節約開發成本,恰當的復用還可以改善系統的可維護性。物件導向設計復用的目標...
物件導向的五大設計原則
單一職責原則 乙個類,最好只做一件事,只有乙個引起它的變化。單一職責原則可以看做是低耦合 高內聚在物件導向原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。職責過多,可能引起它變化的原因就越多,這將導致職責依賴,相互之間就產生影響,從而大大損傷其內聚性和耦合度,通常意義下的...