定義:什麼是介面?客戶端不應該依賴它不需要的介面
類間的依賴關小應該建立在最小的介面上
1.例項介面:
person zhangsan =
newperson()
;
類person就是zhangsan的例項介面。
2.類介面,就是通常意義上,用inte***ce關鍵字定義的介面。
解釋:根據介面隔離原則的定義:事實上就是建立單一介面,不要建立臃腫的介面。介面盡量細化,同時介面中的方法盡量少。
介面隔離原則講的是不論是例項介面也好,還是類介面也好,都要做到盡量細化
但是注意介面隔離原則和單一職責原則不同,單一職責是從業務邏輯角度去定義介面,
比如selectinte***ce,updateinte***ce,這是單一職責原則,按查詢分,按更新分,這裡面可能有10個查詢方法,10個更新方法。
但是介面隔離原則的出發點的是盡量使用多個專門的介面
例如,在selectinte***ce中有10個方法,其中有5個方法是與查詢user相關的,有兩個方法是查詢role相關的,有兩個方法是查詢perms相關的,當某個類的業務邏輯不僅僅只和user相關的時候,這個時候就不符合介面隔離原則。
定義乙個美女,需要好身材,好面孔,好氣質,那就可以設計這樣的介面
public
inte***ce
ipettygirl
定義乙個星探,展示這個美女。
public
abstract
class
abstractsearcher
/** * 展示美女
*/public
abstract
void
show()
;}
實現美女類和星探類,並測試。
public
class
pettygirl
implements
ipettygirl
@override
public
void
goodlooking()
@override
public
void
nicefigure()
@override
public
void
goodtemperament()
}public
class
searcher
extends
abstractsearcher
@override
public
void
show()
}public
class
client
}
展示了迪麗熱巴是個美女。那現在問題來了,這是乙個好的介面設計嗎?如果有人認為好面孔,好身材是美女,不一定需要好氣質。或者有人認為只要好氣質就是美女。
那麼實現ipettygirl介面中goodtemperament方法而不實現其他方法?這樣做是不行的。那麼我們根據介面隔離原則來拆分介面。
public
inte***ce
igoodbodygirl
public
inte***ce
igoodtemperament
這樣拆分介面,那麼迪麗熱巴還是乙個好面孔,好身材,好氣質的美女。它就需要實現兩個介面。
public
class
pettygirl
implements
igoodbodygirl
,igoodtemperament
@override
public
void
goodlooking()
@override
public
void
nicefigure()
@override
public
void
goodtemperament()
}
這樣設計介面,在需要擴充套件的時候,就方便修改了。如果她不是好氣質的美女,只需要刪掉igoodtemperament介面的實現即可。
保持介面的純潔性。
具體規範要求有以下4點:
1.介面盡量小介面隔離原則的實現也是有難度的,給出4點建議:這是核心定義,不出現臃腫的介面,但是小是有限度的,不能無限小,根據介面隔離原則拆分介面時,首先要滿足單一職責原則
2.介面要高內聚,減少對外互動,將不需要對外公布的方法設計為非public方法,介面是對外的承諾,承諾越少越有利於系統的安全
3.定**務
只提供訪問者需要的方法,不提供訪問者不需要的方法或其他方法
4.介面設計有限度,不能臃腫,也不能無限小
1.乙個介面只服務於乙個子模組,比如userservice,只用於處理使用者登入,登出等跟使用者相關的操作2.通過業務邏輯壓縮public方法
3.已經汙染了的介面,盡量修改,如果修改風險過大,使用介面卡模式
4.了解環境,環境不同,介面的拆分標準就不同,深入了解業務邏輯,才能設計更好的介面
設計原則之介面隔離原則
2.新建乙個手機類mobile和乙個座機類phone,分別來實現介面icommon。如下 5.在類ispfragment中分別使用類wealthman和類poorman,實現富人使用手機和窮人使用座機的效果。如下 6.執行後的效果,如下 以上實現方式可以看出,對於手機類mobile和座機類phone...
設計原則 介面隔離原則
介面隔離原則,這個原則最關鍵就是理解其中 介面 的含義,不同的理解方式,對應的在原則上也有不同的解讀方式。除此之外,介面隔離原則和單一職責原則有些類似,需要了解它們的區別和聯絡 介面隔離原則,英文名ite ce segregation principle,簡稱isp。客戶端不應強迫它不需要的介面。這...
設計原則之介面隔離原則(ISP)
只提供呼叫者需要的方法,遮蔽不需要的方法 電子商務系統,該系統中有訂單這個類,並在三個地方使用到訂單類 針對這三種不同的應用場景,為了滿足介面隔離原則,應使用是三個不同的介面進行隔離,每個介面中提供的方法不同,這樣使每個應用都建立在最小介面上 使用者門戶應用介面 public inte ce ior...