介面隔離原則

2021-10-13 07:43:53 字數 2339 閱讀 2530

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...