天天看點

學習設計模式六大設計原則之二

四、接口隔離原則(Interface Segregation Principle,ISP)

1、執行個體接口;在Java中使用關鍵字new産生一個執行個體,它是對一個類型事物的描述,它是一個接口。比如定義一個Person類,使用new執行個體化Person。Person

p = new Person();其中Person就是p的一個接口。

2、類接口;由Java中的關鍵字Interface定義的接口。

接口隔離原則的定義:

1、Clients

should not be forced to depend upon interfaces that they don't use.

2、The

dependency of one class to another one should depend on the smallest possible interface.

通過上邊兩條定義可以通俗點講:接口盡量細化,同時接口中的方法盡量少。接口是我們設計時對外提供的契約,通過分散定義多個接口,可以預防未來變更的擴散,提高系統的靈活性和可維護性。根據接口隔離原則拆分接口時,首先必須滿足單一職責原則。

實際設計:

1、一個接口隻服務于一個子子產品或者業務邏輯;

2、通過業務邏輯壓縮接口中的public方法,盡量使接口達到滿身筋骨肉;

3、已經被污染的接口,盡力修改,如果風險大,則使用擴充卡模式進行轉化;

4、了解環境,拒絕盲從;

五、迪米特法則(Law

of Demeter,LoD)也稱最少知識原則(Least Knowledge Principle,LKP)

規則是:一個對象應該對其他的對象有最少的了解。(Only

talk to your immedate friends)

迪米特法則要求類要羞澀一點,盡量不要對外公布太多的public方法和非靜态public變量,迪米特法則的初衷在于降低類之間的耦合。由于每個類盡量減少對其他類的依賴,是以,很容易使得系統的功能子產品功能獨立,互相之間不存在(或很少有)依賴關系。

迪米特法則的核心觀念就是類間解耦,弱耦合,隻有弱耦合了,類的複用率才能提高。

六、開閉原則(Open

Closed Principle,OCP)

Software

entities like classes, modules and functions should be open for extension but closed for modification.

開閉原則是面向對象設計的基本設計規則,其他原則是開閉的具體形态的展現。

開閉原則的好處有:

提高代碼的複用性,可維護性好。