設計模式七大原則之介面隔離原則

2021-10-02 15:11:18 字數 3037 閱讀 8002

乙個類對另乙個類的依賴應該建立在最小的介面上,如果建立在不是最小的介面上,則要實現不需要的方法違背介面隔離原則。

場景:inte***ce1是乙個介面,有五個方法,c和d分別實現了inte***ce1介面,a通過inte***ce1對c產生依賴,但只需要用到function1,function2,function3三個方法,b通過inte***ce1對c產生依賴,但只需要用到function1,function4,function5三個方法

傳統解決方法:

只有乙個介面,類圖如下:

**實現:

package com.ldx.segera;

public

class

segeration

}inte***ce

inte***ce1

class

cimplements

inte***ce1

@override

public

void

function2()

@override

public

void

function3()

@override

public

void

function4()

@override

public

void

function5()

}class

dimplements

inte***ce1

@override

public

void

function2()

@override

public

void

function3()

@override

public

void

function4()

@override

public

void

function5()

}class

apublic

void

function2

(inte***ce1 i)

public

void

function3

(inte***ce1 i)

}class

bpublic

void

function4

(inte***ce1 i)

public

void

function5

(inte***ce1 i)

}

執行結果:

執行結果是沒有問題的,也解決了場景需求,但是類c和d卻實現了不需要的其他兩個方法。這就相對於乙個工廠個人,他本來只需要負責搬貨,但是你還要強制他去當客服,這顯然是不合理的。

解決方法:介面隔離

將inte***ce1分解成三個介面inte***ce1(負責function1),inte***ce2(負責function2,function3),inte***ce3(負責function4,function5),c分別實現了inte***ce1和inte***ce2,d分別實現了inte***ce1和inte***ce3,a通過對inte***ce1和inte***ce2的依賴對c產生依賴,b通過對inte***ce1和inte***ce3的依賴對d產生依賴,類圖如下:

**實現:

package com.ldx.segera.com.ldx.segeration;

public

class

segeration

}inte***ce

inte***ce1

inte***ce

inte***ce2

inte***ce

inte***ce3

class

cimplements

inte***ce1

, inte***ce2

@override

public

void

function2()

@override

public

void

function3()

}class

dimplements

inte***ce1

, inte***ce3

@override

public

void

function4()

@override

public

void

function5()

}class

apublic

void

function2

(inte***ce2 i)

public

void

function3

(inte***ce2 i)

}class

bpublic

void

function4

(inte***ce3 i)

public

void

function5

(inte***ce3 i)

}

執行結果:

小結

介面隔離原則要求乙個類對另乙個類的依賴要建立在最小介面上,否則會承擔不需要的職責。

七大設計原則彙總:七大設計原則彙總

設計模式七大原則之介面隔離原則

基本介紹 客戶端不應該依賴它不需要的介面,即乙個類對另乙個類的依賴應該建立在最小的介面上 先看一張圖 類a通過介面inte ce1依賴類b,類c通過介面inte ce1依賴類d,如果介面inte ce1對於類a和類c來說不是最小介面,那麼類b和類d必須去實現他們不需要的方法。按隔離原則應當這樣處理 ...

設計模式七大原則之介面隔離原則(ISP)

介面隔離原則基本介紹 不應該依賴不需要的介面,即乙個類對另乙個類的依賴應該建立在最小的介面上。場景 1.類b實現介面inte ce1 類a通過介面inte ce1依賴 使 用 類b,但是只會用到1,2,3方法 2.類d實現介面inte ce1 類c通過介面inte ce1依賴 使 用 類d,但是只會...

02 設計模式七大原則 介面隔離原則

客戶端不應該依賴他不需要的介面,即乙個類對另乙個類的依賴應該建立在最小的介面上 package study.wyy.design.principle.segregation author by wyaoyao description date 2020 10 13 8 30 下午 public cl...