設計原則之介面隔離原則

2021-10-24 01:51:12 字數 2731 閱讀 2728

定義:

客戶端不應該依賴它不需要的介面

類間的依賴關小應該建立在最小的介面上

什麼是介面?

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.介面盡量小

這是核心定義,不出現臃腫的介面,但是小是有限度的,不能無限小,根據介面隔離原則拆分介面時,首先要滿足單一職責原則

2.介面要高內聚,減少對外互動,將不需要對外公布的方法設計為非public方法,介面是對外的承諾,承諾越少越有利於系統的安全

3.定**務

只提供訪問者需要的方法,不提供訪問者不需要的方法或其他方法

4.介面設計有限度,不能臃腫,也不能無限小

介面隔離原則的實現也是有難度的,給出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...