介面隔離原則 通過設計規避變更風險

2021-07-02 23:04:48 字數 1581 閱讀 1711

介面隔離原則:客戶端不應該依賴於它不需要的介面,而是將類間的依賴關係建立在最小的介面上。

換句話說,在實際的開發中,客戶端需要什麼介面我們就為它提供什麼介面,並把它不需要的介面剔除掉。這麼一來就會有乙個問題:有些介面涵蓋的功能比較多,我們類在實現介面的時候可能只需要應用到介面中的某些方法,那怎麼辦呢?我們應該把類的介面盡可能地細化,需要什麼就用什麼,而不是一味地貪「多」。

還是用打遊戲來做例子吧:

一款遊戲具有很多很多的元素,有的 ui 特別好看,有的動作特別酷,有點故事特別有趣,等等……

public

inte***ce

igame

不同的遊戲包含的遊戲元素是不一樣的,不同的遊戲的特點也不一樣,例如:

動作類遊戲:

public

class

actiongame

implements

igame

@override

public

void

goodstory()

@override

public

void

coolaction()

@override

public

void

newplaymode()

}

故事類遊戲:

public

class

storygame

implements

igame

@override

public

void

goodstory()

@override

public

void

coolaction()

@override

public

void

newplaymode()

}

乍一看這樣沒什麼問題,不妨想一想,有的遊戲愛好者覺得動作類遊戲還需要考慮遊戲自由度,那我們為了滿足這個需求,就得在 igame 介面中新增方法。新增了方法之後,storygame 類也要因此發生改變,然而 storygame 根本不需要考慮遊戲的自由度問題啊,為什麼要影響 storygame 類?同樣的道理,如果遊戲愛好者們說故事類遊戲需要考慮人物動作和場景是否細膩、真實,而這個在動作類裡不需要考慮時,我們為什麼要去改變 actiongame 類呢?所以我們會發現,igame 介面實在「太大了」,我們需要將它細化:

public

inte***ce

iui

public

inte***ce

iaction

public

inte***ce

istory

public

inte***ce

iplaymode

通過這樣細分介面,讓我們的遊戲類需要什麼介面就實現什麼介面,在需要修改時也只修改特定的介面,保持了介面的穩定,提高系統的靈活性和可維護性。

設計原則 介面隔離原則

介面隔離原則,這個原則最關鍵就是理解其中 介面 的含義,不同的理解方式,對應的在原則上也有不同的解讀方式。除此之外,介面隔離原則和單一職責原則有些類似,需要了解它們的區別和聯絡 介面隔離原則,英文名ite ce segregation principle,簡稱isp。客戶端不應強迫它不需要的介面。這...

設計原則之介面隔離原則

定義 客戶端不應該依賴它不需要的介面 類間的依賴關小應該建立在最小的介面上 什麼是介面?1.例項介面 person zhangsan newperson 類person就是zhangsan的例項介面。2.類介面,就是通常意義上,用inte ce關鍵字定義的介面。解釋 根據介面隔離原則的定義 事實上就...

設計原則之介面隔離原則

2.新建乙個手機類mobile和乙個座機類phone,分別來實現介面icommon。如下 5.在類ispfragment中分別使用類wealthman和類poorman,實現富人使用手機和窮人使用座機的效果。如下 6.執行後的效果,如下 以上實現方式可以看出,對於手機類mobile和座機類phone...