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。)
此方法透過實作多個介面來完成所需的職責。
兩種方式各有優缺點,通常我們應該先考慮後一個方案,如果涉及到類型轉換時則選擇前一個方案。
本文出自CSDN博客,轉載請標示出處: http://blog.csdn.net/scelong/archive/2009/12/18/5031030.aspx
-