<Java設(shè)計(jì)模式>——接口隔離原則(ISP)VIP開啟更多姿勢(shì)

接口隔離的接口是什么


  • 實(shí)例接口:在Java中申明的一個(gè)類,使用new關(guān)鍵字創(chuàng)建的對(duì)象。
  • 類接口:Java中使用interface關(guān)鍵字定義的接口。

什么是接口隔離原則


建立單一接口,不需要龐大臃腫的接口,盡量細(xì)化接口,同時(shí)接口的方法盡量的少。

生活上的例子


我們出去的旅游的時(shí)候,肯定會(huì)去住酒店,那么在前臺(tái)登記完成之后,你會(huì)拿到一把鑰匙,這個(gè)鑰匙只能打開你預(yù)定房間的門。假如前臺(tái)給你的不是一把鑰匙,而是一串酒店所有的鑰匙,雖然你任能夠打開自己預(yù)定的房間,但是你也可以打開其他的房間啊,這個(gè)時(shí)候,你是不是覺得可以干點(diǎn)壞事了呢?哈哈,不過現(xiàn)實(shí)是遵守接口隔離原則的,我只提供你能夠訪問的。

在使用第三方SDK的時(shí)候,他們提供給你接口,基本上都是符合這個(gè)原則,你只能夠調(diào)用他提供給你的api,其他你是沒有訪問權(quán)限的(反射除外),當(dāng)然如果你自己的寫SDK的時(shí)候,也要遵守這個(gè)原則,防止使用SDK的開發(fā)者調(diào)用了本不應(yīng)該開放的接口。

單一職責(zé)和接口隔離


單一職責(zé)原則講的是實(shí)現(xiàn)時(shí)的職責(zé)分離,實(shí)現(xiàn)類需要實(shí)現(xiàn)該職責(zé)的所有方法。

接口隔離原則講的是設(shè)計(jì)時(shí)的架構(gòu)分離,限制實(shí)現(xiàn)類,避免實(shí)現(xiàn)類實(shí)現(xiàn)不需要實(shí)現(xiàn)的方法,同時(shí)也限制外部類訪問的范圍,但是必須符合單一職責(zé)原則。

舉個(gè)例子:

//書的管理類
interface BookDbManager{
    
    public Book queryBookByName(String name);

    public void deleteBookByName(String name);

    public Cursor queryBook(String sql);

    public void deleteBook(String sql);

}

看看上面的接口,他只是處理Book管理的工作,可以說是符合單一職責(zé)原則的,加入限制有兩種身份的人需要使用查詢和刪除Book的功能,一個(gè)是管理員,一個(gè)是普通用戶,你會(huì)直接把BookDbManager都給他們使用嗎?很顯然是不行的,普通用戶不見得會(huì)使用sql語句,當(dāng)然也不能給他使用sql語句,因?yàn)檫@個(gè)里面有很大的風(fēng)險(xiǎn),所以咱們必須根據(jù)身份重新定義新的接口。

//管理員訪問的接口
interface AdminBookDbManager{
    public Cursor queryBook(String sql);

    public void deleteBook(String sql);
}

//用戶訪問的接口
interface UserBookDbManager{
    public Book queryBookByName(String name);

    public void deleteBookByName(String name);
}

通過接口隔離原則,有效的隔離不同用戶身份訪問的權(quán)限,并且符合單一職責(zé)原則。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄: 設(shè)計(jì)模式六大原則(1):單一職責(zé)原則 設(shè)計(jì)模式六大原則(2):里氏替換原則 設(shè)計(jì)模式六大原則(3):依賴倒...
    加油小杜閱讀 793評(píng)論 0 1
  • 設(shè)計(jì)模式六大原則 設(shè)計(jì)模式六大原則(1):單一職責(zé)原則 定義:不要存在多于一個(gè)導(dǎo)致類變更的原因。通俗的說,即一個(gè)類...
    viva158閱讀 823評(píng)論 0 1
  • 轉(zhuǎn)載標(biāo)注聲明:http://www.uml.org.cn/sjms/201211023.asp 目錄:[設(shè)計(jì)模式六...
    Bloo_m閱讀 796評(píng)論 0 7
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,828評(píng)論 25 709
  • 突然好想你,想打個(gè)電話告訴你,想聽聽你的聲音…… 可是,我卻膽怯了,我沒有打給你,我沒能聽見你的聲音,也沒有告訴你...
    胡紫閱讀 215評(píng)論 0 0

友情鏈接更多精彩內(nèi)容