天天看點

設計模式之6大原則

設計模式之6大原則

一、設計模式6大原則

名稱

解釋

0、單一職責原則(SRP)

就一個類而言,應該僅有一個引起它變化的原因。

一、"開放-封閉"原則(OCP)

在軟體設計模式中,這種不能修改,但可以擴充的思想也是最重要的一種設計原則。即軟體實體(類、模闆、函數等等)應該可以擴充,但是不可修改。

【通俗】:設計的時候,時刻考慮,盡量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的代碼能不動則不動。

二、裡氏代換原則(LSP)

1.一個軟體實體如果使用的是一個父類的話,那麼一定适用于該子類,而且他覺察不出父類對象和子類對象的差別。也就是說,在軟體裡面,把父類都替換成它的子類,程式的行為沒有變化。

【一句話】:子類型必須能夠替換掉他們的父類型。

三、依賴倒置原則(DIP)

1.高層子產品不應該依賴于底層子產品。兩個都應該依賴抽象。2.抽象不應該依賴于細節,細節依賴于抽象(

【白話】:針對接口程式設計,不要針對實作程式設計。

四、接口隔離原則(ISP)

1.使用多個專門的接口比使用單一的總接口總要好。換而言之,從一個客戶類的角度來講:一個類對另外一個類的依賴性應當是建立在最小接口上的。

2.過于臃腫的接口是對接口的污染。不應該強迫客戶依賴于它們不用的方法。

五、合成/聚合複用原則(CARP)

盡量使用合成/聚合,盡量不要使用類繼承。

【聚合】:表示一種弱的擁有關系,展現的是A對象可以包含B對象,但B對象不是A對象的一部分。

【合成】:一種強的擁有關系,提現了嚴格的部分和整體的關系,部分和整體的生存周期一緻。

六、迪米特法則(LoD)

最少知識原則

強調類之間的松耦合。即:如果兩個類不必彼此直接通信,那麼着兩個類就不應當發送直接的互相作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。

___大部分内容摘自《大話設計模式》

1.樓主?題目不是6個設計模式嗎?怎麼列舉了7個?

答:不同的書上列舉的不太一樣,單一模式原則和接口隔離原則多數都提了一個。本文都列舉上,待深入探究後給出詳細分析。

2.接口隔離原則與單一職責原則不是相同的嗎?

答:錯,接口隔離原則與單一職責的審視角度是不相同的。

單一職責要求的是類和接口職責單一,注重的是職責,這是業務邏輯上的劃分;

而接口隔離原則要求接口的方法盡量少。例如一個接口的職責可能包含10個方法,這10個方法都放在一個接口中,并且提供給多個子產品通路,各個子產品按照規定的權限來通路,在系統外通過文檔限制“不使用的方法不要通路”,按照單一職責原則是允許的,按照接口隔離原則是不允許的,因為它要求“盡量使用多個專門的接口”,專門的接口指什麼?就是指提供給每個子產品都應該是單一接口,提供給幾個子產品就應該有幾個接口,而不是建立一個龐大的臃腫的接口,容納所有的用戶端通路。

繼續閱讀