java面向?qū)ο笤O(shè)計原則之接口隔離原則示例詳解
概念
小接口原則,即每個接口中不存在子類用不到卻必須實現(xiàn)的方法,如果不然,就要將接口拆分。如下圖所示定義了一個接口,包含了5個方法,實現(xiàn)類A用到了3個方法、實現(xiàn)類B用到了3個方法,類圖如下:

類A沒有方法4、方法5,卻要實現(xiàn)它;類B沒有方法2、方法3,但還是要實現(xiàn)這兩個方法,不符合接口隔離原則。改造為將其拆分為三個接口,實現(xiàn)方式改為下圖所示,符合接口隔離原則:

實現(xiàn)
面向?qū)ο髾C制中一個類可以實現(xiàn)多個接口,通過多重繼承分離,通過接口多繼承(實現(xiàn))來實現(xiàn)客戶的需求,代碼更加清晰易維護。如網(wǎng)上商城系統(tǒng)中,封裝一個用戶類,完成用戶的消費記錄、瀏覽記錄等相應(yīng)的功能,如果是會員還要完成記錄會員積分、提現(xiàn)、折扣、會員級別變動等功能;實現(xiàn)精準(zhǔn)化廣告投放時需要根據(jù)用戶特征計算用戶的消費偏好,則可以做以下設(shè)計完成遵循接口隔離原則。

這樣設(shè)計,普通消費者無需實現(xiàn)會員接口,符合接口隔離原則;
同時在做精準(zhǔn)推送時,只需要通過“精準(zhǔn)推送”接口定義對象變量;做會員相關(guān)操作時,只需使用會員接口定義對象變量,而不是所有的內(nèi)容通過消費用戶定義相關(guān)對象變量,代碼的可讀性大大提高。
拓展
1.接口分離原則也是確?!伴_-閉”原則的一個重要手段;模塊相對獨立,通信盡可能少,這樣當(dāng)一個模塊修改時,對別的模塊的影響很小。
2. 代碼清晰易懂,里氏替換和依賴倒置原則更易使用。
3. 語義更加清晰,準(zhǔn)確。(如:家里電路需要處理,我們會在勞動力市場找電工(小接口),而不是說找個工人(大接口),這樣語義更加清晰,準(zhǔn)確)
以上就是java面向?qū)ο笤O(shè)計原則之接口隔離原則示例詳解的詳細內(nèi)容,更多關(guān)于java面向?qū)ο笤O(shè)計原則的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MyBatis中SqlSession實現(xiàn)增刪改查案例
這篇文章主要介紹了MyBatis中SqlSession實現(xiàn)增刪改查案例,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
使用Apache Ignite實現(xiàn)Java數(shù)據(jù)網(wǎng)格
今天我們來探討如何使用Apache Ignite來實現(xiàn)Java數(shù)據(jù)網(wǎng)格,Apache Ignite是一個高性能的內(nèi)存計算平臺,它提供了分布式緩存、數(shù)據(jù)網(wǎng)格和計算功能,可以顯著提高大規(guī)模應(yīng)用的數(shù)據(jù)處理性能,感興趣的小伙伴跟著小編一起來看看吧2024-08-08
Java實現(xiàn)對兩個List快速去重并排序操作示例
這篇文章主要介紹了Java實現(xiàn)對兩個List快速去重并排序操作,結(jié)合實例形式較為詳細的分析了Java針對list的遍歷、去重、排序相關(guān)操作技巧與注意事項,需要的朋友可以參考下2018-07-07
Intellij IDEA中一次性折疊所有Java代碼的快捷鍵設(shè)置
這篇文章主要介紹了Intellij IDEA中一次性折疊所有Java代碼的快捷鍵設(shè)置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
[Java]詳解Socket和ServerSocket學(xué)習(xí)筆記
即時類應(yīng)用或者即時類的游戲,HTTP協(xié)議很多時候無法滿足于我們的需求,這會,Socket對于我們來說就非常實用了。本篇文章主要介紹了Socket和ServerSocket,有興趣的可以了解一下。2016-12-12
java lambda循環(huán)_使用Java 8 Lambda簡化嵌套循環(huán)操作
這篇文章主要介紹了java lambda循環(huán)_使用Java 8 Lambda簡化嵌套循環(huán)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

