接口隔離的接口是什么
- 實例接口:在Java中申明的一個類挠说,使用new關(guān)鍵字創(chuàng)建的對象。
- 類接口:Java中使用interface關(guān)鍵字定義的接口纯命。
什么是接口隔離原則
建立單一接口西剥,不需要龐大臃腫的接口,盡量細(xì)化接口亿汞,同時接口的方法盡量的少瞭空。
生活上的例子
我們出去的旅游的時候,肯定會去住酒店疗我,那么在前臺登記完成之后咆畏,你會拿到一把鑰匙,這個鑰匙只能打開你預(yù)定房間的門吴裤。假如前臺給你的不是一把鑰匙鳖眼,而是一串酒店所有的鑰匙,雖然你任能夠打開自己預(yù)定的房間嚼摩,但是你也可以打開其他的房間啊钦讳,這個時候,你是不是覺得可以干點壞事了呢枕面?哈哈愿卒,不過現(xiàn)實是遵守接口隔離原則的,我只提供你能夠訪問的潮秘。
在使用第三方SDK的時候琼开,他們提供給你接口,基本上都是符合這個原則枕荞,你只能夠調(diào)用他提供給你的api柜候,其他你是沒有訪問權(quán)限的(反射除外)搞动,當(dāng)然如果你自己的寫SDK的時候,也要遵守這個原則渣刷,防止使用SDK的開發(fā)者調(diào)用了本不應(yīng)該開放的接口鹦肿。
單一職責(zé)和接口隔離
單一職責(zé)原則講的是實現(xiàn)時的職責(zé)分離,實現(xiàn)類需要實現(xiàn)該職責(zé)的所有方法辅柴。
接口隔離原則講的是設(shè)計時的架構(gòu)分離箩溃,限制實現(xiàn)類,避免實現(xiàn)類實現(xiàn)不需要實現(xiàn)的方法碌嘀,同時也限制外部類訪問的范圍涣旨,但是必須符合單一職責(zé)原則。
舉個例子:
//書的管理類
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的功能止状,一個是管理員烹棉,一個是普通用戶,你會直接把BookDbManager都給他們使用嗎导俘?很顯然是不行的,普通用戶不見得會使用sql語句剔蹋,當(dāng)然也不能給他使用sql語句旅薄,因為這個里面有很大的風(fēng)險,所以咱們必須根據(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é)原則矫付。