1.客戶端不應該依賴它不需要的介面,即乙個類對另乙個類的依賴應該建立在最小的介面上
2.看圖
/** * 1.a類想通過inte***ce1依賴使用b類
* 2.但是a類只用到了function,function1,function2.
*/public class a
public void relyon1(inte***ce1 inte***ce1)
public void relyon2(inte***ce1 inte***ce1)
}package com.xx.isolation;
public class b implements inte***ce1
@override
public void function1()
@override
public void function2()
@override
public void function3()
}package com.xx.isolation;
public class c
public void relyon1(inte***ce1 inte***ce1)
public void relyon2(inte***ce1 inte***ce1)
}package com.xx.isolation;
public class d implements inte***ce1
@override
public void function1()
@override
public void function2()
@override
public void function3()
}3.類a通過inte***ce1依賴類b,類c通過inte***ce1依賴類d,如果介面inte***ce1對於類a和類c來說不是最小介面,那麼 類b和類d必須去實現他們不需要的方法。
4.按介面隔離原則應當這樣處理:
把inte***ce1分成多個介面,讓類a和類c分別去與他們需要 的介面建立依賴關係。也就是採用介面隔離原則。
5.經過介面隔離分析後修改的圖:
介面inte***ce出現的方法,根據實際情況拆分成三個介面。
**實現:
public inte***ce inte***ce1
public inte***ce inte***ce2
public inte***ce inte***ce3
public class a
public void function1(inte***ce2 inte***ce2)
public void function2(inte***ce2 inte***ce2)
}public class b implements inte***ce1, inte***ce2
@override
public void method2()
@override
public void method()
}public class c
public void function1(inte***ce2 inte***ce2)
public void function2(inte***ce3 inte***ce3)
}public class d implements inte***ce3, inte***ce2
@override
public void method2()
@override
public void method3()
}public class test
}// 列印結果
實現了inte***ce1的method方法
實現了inte***ce2的method1
實現了inte***ce2的method1
實現了inte***ce2的method1
實現了inte***ce2的method2
實現了inte***ce3的method3
介面隔離原則
一 isp簡介 isp inte ce segregation principle 使用多個專門的介面比使用單一的總介面要好。乙個類對另外乙個類的依賴性應當是建立在最小的介面上的。乙個介面代表乙個角色,不應當將不同的角色都交給乙個介面。沒有關係的介面合併在一起,形成乙個臃腫的大介面,這是對角色和介面...
介面隔離原則
介面隔離原則 isp 客戶端不應該依賴於它不需要的介面。另一種說法是,類間的依賴關係應該建立在最小的介面上。這樣就可以對客戶端隱藏其他的介面資訊,客戶端 只需要知道它需要的內容介面,然後去處理即可,可以更加專注於對功能的實現,其他一概不管。這就是用最小化介面隔離了實現類的細節,也促使我們將龐大的介面...
介面隔離原則
我們在學校的時候,每學期都會評比三好學生,通過德智體美勞全面考查,選舉出優秀的學生,接下來我們以這個為例 首先,我們定義乙個三好學生的介面 public inte ce igoodstudent 三好學生的實現類,每個學生都有名字的,三好學生也不例外 public class goodstudent...