沒有使用接口分離原理的設計如圖1-1所示,存在以下問題:如果Client A類需要改變所使用的Service接口中的方法,那么不但要改動Service接口和ServiceImp類,還要對ClientB類和ClientC類重新編譯。也就是說,對ClientA的修改會影響ClientB和ClientC,因此應對其進行修改。
1-1 使用通用接口的設計
圖1-2採用的是接口分離原則,這個對每個客戶類都有一個專用的接口,這個接口中只聲明了與這個客戶類相關的方法,而ServiceImp類實現了所有的接口。如果ClientA要改變它所使用的接口中的方法,只需改動ServiceA接口和ServiceImp類即可,ClientB和ClientC類不受影響。
1-2 使用接口分離的設計