四、接口隔離原則(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.
開閉原則是面向對象設計的基本設計規則,其他原則是開閉的具體形态的展現。
開閉原則的好處有:
提高代碼的複用性,可維護性好。