小博老師解析設計思想 ——七大設計原則

[引言]編程

在軟件開發的過程當中,設計思想一般是最難學習和領悟的,咱們常常聽到面向對象設計思想、設計模式、面向接口、面向切片設計模式

[單一職責原則]學習

 單一職責原則【SINGLE RESPONSIBILITY PRINCIPLE】:一個類只承擔一個職責。在咱們設計類的時候,應該儘可能作到讓每個類,有且僅有一個調用它的需求存在。由於若是某個類承擔了過多的職責和調用需求,那麼頗有可能由於一個需求的改變,影響或破壞其餘需求的實現。設計

小博老師給你們舉個例子,大公司一般崗位分工明確,職責清晰,這樣的話每個員工各司其職,業務開展層次分明。而小公司則每每一我的身兼數職,看似效率很高,可是頗有可能由於忙於處理緊急事務而耽誤了核心重要工做。code

 

[里氏替換原則]對象

 里氏替換原則【LISKOV SUBSTITUTION PRINCIPLE】:任何基類能夠出現的地方,子類必定能夠出現。LSP是繼承複用的基石,只有當衍生類能夠替換掉基類,軟件單位的功能不受到影響時,基類才能真正被複用,而衍生類也可以在基類的基礎上增長新的行爲。LSP一直以來被做爲衡量繼承關係的質量的標準。blog

 

[依賴倒置原則]繼承

依賴倒置原則【DEPENDENCE INVERSION PRINCIPLE】:高層模塊不該該依賴低層模塊,兩者都應該依賴其抽象;抽象不該該依賴細節;細節應該依賴抽象。即針對接口編程,不要針對實現編程。接口

在咱們編程設計的時候,不該該考慮這裏須要「哪一個類的對象」,而應該多考慮這裏須要「能夠作什麼的對象」,其中「能夠作什麼」通常抽象爲接口。也就是說程序設計中的全部抽象都應該終止於接口。事務

 

[接口隔離原則]

接口隔離原則【INTERFACE SEGREGATION PRINCIPLE】:創建單一接口,不要創建龐大臃腫的接口,儘可能細化接口,接口中的方法儘可能少。這個原則與單一職責原則有點殊途同歸的概念,只是一個針對類設計而言,一個針對接口設計而言。

 

[迪米特法則]

迪米特法則【LOW OF DEMETER】:低耦合,高內聚。看似簡單的一句話,其實蘊含了很寬泛的設計思想。

小博老師給你們舉個例子,電腦分爲筆記本電腦和臺式電腦。筆記本電腦看似輕便、易於攜帶,可是若是筆記本的鍵盤壞了,咱們每每須要將整檯筆記本一塊兒送去維修,若是顯示屏出現了故障,則也須要將整檯筆記本一塊兒送去維修……這其實就是由於筆記本是一種高耦合、低內聚的設計。而對比臺式電腦,若是咱們鍵盤出現了問題,則只須要將鍵盤拆下來從新更換一個就能夠,若是咱們的顯示器出現了故障,咱們只須要將顯示器拆下來單獨送去維修便可,不須要把笨重的機箱一塊兒送過去……這就是由於臺式機的設計遵循了低耦合、高內聚的思想。


[開閉原則]

開閉原則【OPEN CLOSE PRINCIPLE】:又稱爲「開放-封閉原則」,指程序設計過程當中,對擴展是開放的,而對於修改是封閉的。需求的改變和擴展是不可避免的,可是咱們只容許以擴展新的內容的方式來改變,而不容許修改已完成的內容。

遵循此原則會讓咱們在應對需求改變時收放自如,代價最小化。對於版本更新頻度高的程序尤其重要。

 

[組合/聚合複用原則]

組合/聚合複用原則【Composition/Aggregation Reuse Principle(CARP) 】:儘可能使用組合和聚合少使用繼承的關係來達到複用的原則。這個原則主張的是,爲了達到複用的效果,不該該有限選擇繼承關係,由於這樣會形成子類的泛濫,而應該更多地、優先地考慮使用組合或聚合關係。也就是說,在類關係的選擇時,組合關係和聚合關係的優先級要高於繼承關係。

相關文章
相關標籤/搜索