JAVA的設計原則
1. 接口隔離原則(ISP:Interface Segregation Principle)
定義:使用多個專門的比使用單一的總接口要好。也可以說:建立單一接口,不要建立臃腫龐大的接口。
ISP的兩種定義:
◇ “Clients should not be forced to depend upon interfaces that they don't use”
客戶端不應該依賴它不需用的接口。
◇ “The dependency of one class to another one should depend on the smallest possible interface”
一個類對另外一個類的依賴性應當是建立在最小的接口上的。(從客戶端)
接口與角色:將接口理解爲一個類所提供的所有方法的特徵集合。如此,接口的劃分,就帶來了類型的劃分。所以一個接口應該只表示一種角色,而不是擔任多個角色。
接口污染(Interface Contamination):所謂接口污染就是爲接口添加了不必要的職責。接口污染會帶來維護和重用方面的問題,最常見的問題是我們爲了重用被污染的接口,被迫實現並維護不必要的方法。因此,我們必須分離客戶程序,分離客戶程序就是分離接口。
分離接口的實現方法:
分離接口的方式一般分爲兩種:
1) 使用委託分離接口。(Separation through Delegation)
就把請求委託給別的接口的實現類來完成需要的職責,就是適配器模式(Adapter)。
2) 使用多重繼承分離接口。(Separation through Multiple Inheritance。)
該方法通過實現多個接口來完成需要的職責。
兩種方式各有優缺點,通常我們應該先考慮後一個方案,如果涉及到類型轉換時則選擇前一個方案。