介面隔離原則

2021-08-27 21:35:57 字數 1539 閱讀 8375

一、isp簡介(isp--inte***ce segregation principle):

使用多個專門的介面比使用單一的總介面要好。

乙個類對另外乙個類的依賴性應當是建立在最小的介面上的。

乙個介面代表乙個角色,不應當將不同的角色都交給乙個介面。沒有關係的介面合併在一起,形成乙個臃腫的大介面,這是對角色和介面的汙染。

「不應該強迫客戶依賴於它們不用的方法。介面屬於客戶,不屬於它所在的

類層次結構。」這個說得很明白了,再通俗點說,不要強迫客戶使用它們不用的方法,如果強迫使用者使用它們不使用的方法,那麼這些客戶就會面臨由於這些不使用的方法的改變所帶來的改變。

二、舉例說明:

使用場合,提供呼叫者需要的方法,遮蔽不需要的方法.滿足介面隔離原則.比如說電子商務的系統,有訂單這個類,有三個地方會使用到,

乙個是門戶,只能有查詢方法,

乙個是外部系統,有新增訂單的方法,

乙個是管理後台,新增刪除修改查詢都要用到.

根據介面隔離原則(isp),乙個類對另外乙個類的依賴性應當是建立在最小的介面上.

也就是說,對於門戶,它只能依賴有乙個查詢方法的介面.

uml結構如下:

下面是實現的**.

//--這兒不用

介面繼承,因為可能出現修改了父介面影響了

子介面

inte***ce iorderforportal

inte***ce iorderforothersys

inte***ce iorderforadmin

/*inte***ce iorderforportal

inte***ce iorderforothersys

inte***ce iorderforadmin extendsiorderforportal,iorderforothersys

*/class order implements iorderforportal,iorderforothersys,iorderforadmin

//返回給portal

public static iorderforportal getorderforportal()

//返回給othersys

public static iorderforothersys getorderforothersys()

//返回給admin

public static iorderforadmin getorderforadmin()

//--下面是介面方法的實現.只是返回了乙個string用於演示

public string getorder()

public string insertorder()

public string updateorder()

public string deleteorder()

}public class testcreatelimit

}

這樣就能很好的滿足介面隔離原則了,呼叫者只能訪問它自己的方法,不能訪問到不應該訪問的方法. 

介面隔離原則

介面隔離原則 isp 客戶端不應該依賴於它不需要的介面。另一種說法是,類間的依賴關係應該建立在最小的介面上。這樣就可以對客戶端隱藏其他的介面資訊,客戶端 只需要知道它需要的內容介面,然後去處理即可,可以更加專注於對功能的實現,其他一概不管。這就是用最小化介面隔離了實現類的細節,也促使我們將龐大的介面...

介面隔離原則

我們在學校的時候,每學期都會評比三好學生,通過德智體美勞全面考查,選舉出優秀的學生,接下來我們以這個為例 首先,我們定義乙個三好學生的介面 public inte ce igoodstudent 三好學生的實現類,每個學生都有名字的,三好學生也不例外 public class goodstudent...

介面隔離原則

介面隔離原則是指用多個專門的介面,而不使用單一總介面,客戶端不應該依賴它不需要的介面,這個原則指導我們在設計乙個介面的時候要注意以下幾點 乙個類對另乙個類依賴應該建立在最小的介面之上。建立單一介面,不要建立龐大臃腫的介面 盡量細化每個介面,介面中的方法盡量少 不是越少越好,而是要適度 介面隔離原則完...