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