AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

接口隔離原則,到底什么需要隔離?

來源: 責編: 時間:2024-07-03 17:16:29 1093觀看
導讀通過前面的文章,SRP限制一個類的變化來源應該是單一的;OCP要求不要隨意修改一個類;LSP則規(guī)范了類的繼承關系。那么接口隔離原則會給我們帶來什么驚喜呢?今天我們就來聊一聊。什么是接口隔離?接口隔離原則,Interface segrega

通過前面的文章,SRP限制一個類的變化來源應該是單一的;OCP要求不要隨意修改一個類;LSP則規(guī)范了類的繼承關系。那么接口隔離原則會給我們帶來什么驚喜呢?今天我們就來聊一聊。c6v28資訊網(wǎng)——每日最新資訊28at.com

c6v28資訊網(wǎng)——每日最新資訊28at.com

什么是接口隔離?

接口隔離原則,Interface segregation principle(ISP),也是 Robert C. Martin提出的 SOLID原則中的一種,老規(guī)矩,還是先看看作者 Robert C. Martin 對接口隔離原則是如何定義的:c6v28資訊網(wǎng)——每日最新資訊28at.com

Clients should not be forced to depend upon interfaces that they do not use.

在作者對接口隔離原則的定義中強調:不應強迫客戶依賴他們不使用的接口。c6v28資訊網(wǎng)——每日最新資訊28at.com

在 Java中,我們一直都強調要面向接口編程,足以看出接口在 Java中的重要性。其實, 與單一職責原則類似,接口隔離原則的目標是通過將軟件拆分為多個獨立的部分來減少所需更改的副作用和頻率。c6v28資訊網(wǎng)——每日最新資訊28at.com

這里的"不應強迫"該如何理解?通常來講"不應強迫" 有2種理解:c6v28資訊網(wǎng)——每日最新資訊28at.com

  • 第一種理解是用戶不能被強迫使用整個接口。
  • 第二種理解是用戶只使用接口中的部分方法,其余的方法不能被強迫使用。

顯然,第二種理解比較合理,所以接口隔離原則可以更直白一點的表達成:在接口中,不要放置接口使用者不需要的方法。c6v28資訊網(wǎng)——每日最新資訊28at.com

站在接口使用者的角度,這樣的設計更加人性化,為什么要增加一些我不需要的依賴負擔呢?c6v28資訊網(wǎng)——每日最新資訊28at.com

如何實現(xiàn)接口隔離?

假如有一個業(yè)務場景,需要定義一個交通工具的 Transportation類,類中包含設置基本信息(價格,顏色),啟停以及飛行等方法:c6v28資訊網(wǎng)——每日最新資訊28at.com

public interface Transportation{    void setPrice(double price);    void setColor(String color);    void start();    void stop();    void fly();}

汽車屬于一種交通工具,因此我們可以定義一個 Car類去實現(xiàn) Transportation類,代碼如下:c6v28資訊網(wǎng)——每日最新資訊28at.com

public class Car implements Transportation {    @Override    public void setPrice(double price) {       // 價格設置邏輯    }    @Override    public void setColor(String color) {        // 顏色設置邏輯    }    @Override    public void start(){        // 啟動邏輯    }    @Override    public void stop(){        // 停止邏輯    }    @Override    public void fly(){        // 飛行邏輯    }}

從上面的代碼可以發(fā)現(xiàn)一個問題:Car不能飛行卻要實現(xiàn) fly()方法,為什么?顯然 fly()這個方法是 Car這種交通工具不需要關注的,這就違反了接口隔離原則。c6v28資訊網(wǎng)——每日最新資訊28at.com

如何解決這個問題呢?c6v28資訊網(wǎng)——每日最新資訊28at.com

首先,我們將交通工具接口分成多個角色接口,每個角色接口用于特定的行為,在這里我們可以將 Transportation分成 BasicFeature、 Movable、Flyable 三類行為接口。c6v28資訊網(wǎng)——每日最新資訊28at.com

// 基本屬性, 價格,顏色public interface BasicFeature{    void setPrice(double price);    void setColor(String color);}// Movable 行為, 行駛和停止public interface Movable {    void start();    void stop();}// 飛行 行為public interface Flyable {    void fly();}

而 Car只需要關注基本屬性和 Movable行為,代碼如下:c6v28資訊網(wǎng)——每日最新資訊28at.com

public class Car implements BasicFeature, Movable {    @Override    public void setPrice(double price) {        // 價格設置邏輯    }    @Override    public void setColor(String color) {        // 顏色設置邏輯    }    @Override    public void start(){        // 啟動邏輯    }    @Override    public void stop(){        // 停止邏輯    }}

Airplane飛機需要關注基本屬性,Movable行為和飛行行為,代碼如下:c6v28資訊網(wǎng)——每日最新資訊28at.com

public class Airplane implements BasicCFeature, Movable, Flyable {    @Override    public void setPrice(double price) {        // 價格設置邏輯    }    @Override    public void setColor(String color) {        // 顏色設置邏輯    }    @Override    public void start(){        // 啟動邏輯    }    @Override    public void stop(){        // 停止邏輯    }    @Override    public void fly(){        // 飛行邏輯    }}

通過上面的拆解,我們可以看到每種交通工具只需要關注自己需要的接口就好了,自己不需要的接口就不會被強迫關注,更加不會造成 Car能 fly()這樣不常見的誤區(qū)。c6v28資訊網(wǎng)——每日最新資訊28at.com

接口隔離和單一職責的比較

接口隔離原則和單一職責原則都是 SOLID設計原則中的重要組成部分,雖然它們有一些相似之處,但它們關注的重點和應用的范圍有所不同,在實際開發(fā)中,很容易搞混淆,因此,這里對這兩個原則做詳細比較。c6v28資訊網(wǎng)——每日最新資訊28at.com

  • 關注點不同 單一職責原則(SRP):關注類的職責劃分,確保每個類只有為一類行為負責,它主要解決的是類內部職責過多導致的復雜性問題。接口隔離原則(ISP):關注接口的設計,確保客戶端只依賴于它們實際需要的方法。它主要解決的是接口過于龐大導致的依賴問題。
  • 作用范圍不同 單一職責原則(SRP):作用于類的設計和實現(xiàn)層面,通過分離職責提高類的內聚性。接口隔離原則(ISP):作用于接口的設計層面,通過細化接口減少客戶端的依賴,提高系統(tǒng)的靈活性。
  • 實現(xiàn)方法不同 單一職責原則(SRP):通過將一個類的多種職責分離成多個獨立的類來實現(xiàn)。接口隔離原則(ISP):通過將一個大接口分解為多個小接口,讓不同的客戶端依賴于不同的小接口來實現(xiàn)。

因此,接口隔離原則是在遵守單一職責原則的前提下,將接口更加細化。c6v28資訊網(wǎng)——每日最新資訊28at.com

總結

接口隔離可以提高代碼的可讀性、可維護性和靈活性,減少系統(tǒng)的耦合度,在實際開發(fā)中,合理應用接口隔離原則,可以幫助我們創(chuàng)建高質量的代碼和系統(tǒng)。然而,在應用時需要注意適度細化和明確職責,避免過度設計和接口混亂。c6v28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-98549-0.html接口隔離原則,到底什么需要隔離?

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C++ this 指針到底是個什么特殊的指針

下一篇: 利用Spring Boot 3.x與消息中間件RabbitMQ實現(xiàn)火車購票系統(tǒng)實時票務信息同步與更新

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網(wǎng)課的原因激活了平板市場,如今網(wǎng)課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環(huán)境來了。也就是面對著這種殘酷的
  • 一文看懂為蘋果Vision Pro開發(fā)應用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現(xiàn)實(MR)頭戴設備。Vision Pro結合了虛擬現(xiàn)實(VR)和增強現(xiàn)實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 分布式系統(tǒng)中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統(tǒng)的小伙伴們來說,一提起分布式系統(tǒng),就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統(tǒng)
  • 企業(yè)采用CRM系統(tǒng)的11個好處

    客戶關系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產力?! RM軟件用于企業(yè)收集客戶互動,以改善客戶體驗和滿意度?! RM軟件市場規(guī)模如今超過580
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業(yè)內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創(chuàng)始人雷軍在其微博上發(fā)布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發(fā)表演講

    11月18日,記者從2022中關村論壇新聞發(fā)布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發(fā)展改革委、工業(yè)和信息化部、國務
Top