java面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則示例詳解
概念
小接口原則,即每個(gè)接口中不存在子類用不到卻必須實(shí)現(xiàn)的方法,如果不然,就要將接口拆分。如下圖所示定義了一個(gè)接口,包含了5個(gè)方法,實(shí)現(xiàn)類A用到了3個(gè)方法、實(shí)現(xiàn)類B用到了3個(gè)方法,類圖如下:
類A沒有方法4、方法5,卻要實(shí)現(xiàn)它;類B沒有方法2、方法3,但還是要實(shí)現(xiàn)這兩個(gè)方法,不符合接口隔離原則。改造為將其拆分為三個(gè)接口,實(shí)現(xiàn)方式改為下圖所示,符合接口隔離原則:
實(shí)現(xiàn)
面向?qū)ο髾C(jī)制中一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,通過多重繼承分離,通過接口多繼承(實(shí)現(xiàn))來實(shí)現(xiàn)客戶的需求,代碼更加清晰易維護(hù)。如網(wǎng)上商城系統(tǒng)中,封裝一個(gè)用戶類,完成用戶的消費(fèi)記錄、瀏覽記錄等相應(yīng)的功能,如果是會(huì)員還要完成記錄會(huì)員積分、提現(xiàn)、折扣、會(huì)員級(jí)別變動(dòng)等功能;實(shí)現(xiàn)精準(zhǔn)化廣告投放時(shí)需要根據(jù)用戶特征計(jì)算用戶的消費(fèi)偏好,則可以做以下設(shè)計(jì)完成遵循接口隔離原則。
這樣設(shè)計(jì),普通消費(fèi)者無需實(shí)現(xiàn)會(huì)員接口,符合接口隔離原則;
同時(shí)在做精準(zhǔn)推送時(shí),只需要通過“精準(zhǔn)推送”接口定義對(duì)象變量;做會(huì)員相關(guān)操作時(shí),只需使用會(huì)員接口定義對(duì)象變量,而不是所有的內(nèi)容通過消費(fèi)用戶定義相關(guān)對(duì)象變量,代碼的可讀性大大提高。
拓展
1.接口分離原則也是確?!伴_-閉”原則的一個(gè)重要手段;模塊相對(duì)獨(dú)立,通信盡可能少,這樣當(dāng)一個(gè)模塊修改時(shí),對(duì)別的模塊的影響很小。
2. 代碼清晰易懂,里氏替換和依賴倒置原則更易使用。
3. 語義更加清晰,準(zhǔn)確。(如:家里電路需要處理,我們會(huì)在勞動(dòng)力市場(chǎng)找電工(小接口),而不是說找個(gè)工人(大接口),這樣語義更加清晰,準(zhǔn)確)
以上就是java面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則示例詳解的詳細(xì)內(nèi)容,更多關(guān)于java面向?qū)ο笤O(shè)計(jì)原則的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解java開啟異步線程的幾種方法(@Async,AsyncManager,線程池)
在springboot框架中,可以使用注解簡(jiǎn)單實(shí)現(xiàn)線程的操作,還有AsyncManager的方式,如果需要復(fù)雜的線程操作,可以使用線程池實(shí)現(xiàn),本文通過實(shí)例代碼介紹java開啟異步線程的幾種方法(@Async,AsyncManager,線程池),感興趣的朋友一起看看吧2023-09-09idea2020.1.3 手把手教你創(chuàng)建web項(xiàng)目的方法步驟
這篇文章主要介紹了idea 2020.1.3 手把手教你創(chuàng)建web項(xiàng)目的方法步驟,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法
有時(shí)候idea導(dǎo)入一個(gè)新項(xiàng)目,或者pom文件修改(新增)了依賴,pom文件和代碼會(huì)報(bào)紅,提示依賴包不存在,下面這篇文章主要給大家介紹了關(guān)于idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法,需要的朋友可以參考下2023-04-04Java實(shí)現(xiàn)簡(jiǎn)單的掃雷小程序
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的掃雷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04Maven項(xiàng)目部署到Jboss出現(xiàn)Failed to create a new SAX parser
這篇文章主要為大家詳細(xì)介紹了Maven項(xiàng)目部署到Jboss出現(xiàn)Failed to create a new SAX parser的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11關(guān)于Spring Boot獲取bean的3種方式
這篇文章主要介紹了關(guān)于Spring Boot獲取bean的3種方式,在spring中ApplicationContext這個(gè)上下文對(duì)象是獲取bean的基礎(chǔ),需要的朋友可以參考下2023-04-04