微信怎么做捐錢(qián)的網(wǎng)站網(wǎng)站推廣費(fèi)用
文章目錄
- 概念
- 比較
- 代碼示例
- 優(yōu)勢(shì)
- 小結(jié)
概念
要為各個(gè)類建立它們需要的專用接口,而不要試圖去建立一個(gè)很龐大的接口供所有依賴它的類去調(diào)用。
比較
概念有了,再來(lái)看看比較下吧,和單一職責(zé)比較比較。
接口隔離原則和單一職責(zé)都是為了提高類的內(nèi)聚性、降低它們之間的耦合性,體現(xiàn)了封裝的思想,但兩者是不同的:
- 單一職責(zé)原則注重的是職責(zé),而接口隔離原則注重的是對(duì)接口依賴的隔離。
- 單一職責(zé)原則主要是約束類,它針對(duì)的是程序中的實(shí)現(xiàn)和細(xì)節(jié);接口隔離原則主要約束接口,主要針對(duì)抽象和程序整體框架的構(gòu)建。
代碼示例
public interface UserService {boolean register(String cellphone, String password);boolean login(String cellphone, String password);UserInfo getUserInfoById(long id);UserInfo getUserInfoByCellphone(String cellphone);
}public class UserServiceImpl implements UserService {//...
}
這個(gè)接口只是登錄,注冊(cè)的;如果添加刪除的接口,怎么搞呢?是繼續(xù)在這個(gè)接口上,還是新建一個(gè)接口類呢?遵循接口分離原則, 我們新建一個(gè)類。看看,如下:
public interface UserService {boolean register(String cellphone, String password);boolean login(String cellphone, String password);UserInfo getUserInfoById(long id);UserInfo getUserInfoByCellphone(String cellphone);
}public interface RestrictedUserService {boolean deleteUserByCellphone(String cellphone);boolean deleteUserById(long id);
}public class UserServiceImpl implements UserService, RestrictedUserService {//...
}
優(yōu)勢(shì)
這么做有什么優(yōu)勢(shì)呢,來(lái)一起比較比較。主要有以下幾點(diǎn):
- 將臃腫龐大的接口分解為多個(gè)粒度小的接口,可以預(yù)防外來(lái)變更的擴(kuò)散,提高系統(tǒng)的靈活性和可維護(hù)性。
- 使用多個(gè)專門(mén)的接口還能夠體現(xiàn)對(duì)象的層次,因?yàn)榭梢酝ㄟ^(guò)接口的繼承,實(shí)現(xiàn)對(duì)總接口的定義。
- 能減少項(xiàng)目工程中的代碼冗余。過(guò)大的大接口里面通常放置許多不用的方法,當(dāng)實(shí)現(xiàn)這個(gè)接口的時(shí)候,被迫設(shè)計(jì)冗余的代碼.
小結(jié)
接口分離也是經(jīng)常遇到的,再看一些源碼的時(shí)候,有空多看源碼,多總結(jié),總會(huì)有意想不到的收獲的。