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

當(dāng)前位置:首頁(yè) > 科技  > 軟件

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

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

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

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

什么是接口隔離?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// 基本屬性, 價(jià)格,顏色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只需要關(guān)注基本屬性和 Movable行為,代碼如下:Js028資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

接口隔離和單一職責(zé)的比較

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

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

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

總結(jié)

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

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

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

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

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

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場(chǎng)的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號(hào)為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號(hào)的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 這款新興工具平臺(tái),讓你的電腦效率翻倍

    隨著信息技術(shù)的發(fā)展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個(gè)瓶頸。于是各種工具應(yīng)運(yùn)而生,都在爭(zhēng)相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報(bào)告。ESG是“環(huán)境保
  • 造車兩年股價(jià)跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個(gè)交易日起持有小米集團(tuán)的股票,那么截至2023年上半年最后一個(gè)交易日,投資者將浮虧59.16%,同區(qū)間的恒生科技指數(shù)跌幅為52.78%
  • 網(wǎng)傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網(wǎng)友@長(zhǎng)三角行健者爆料稱,據(jù)經(jīng)銷商集團(tuán)反饋,小米汽車目前已經(jīng)開始了交付中心的篩選工作,要求候選場(chǎng)地至少有120個(gè)車位,建筑不能低
  • 華為Mate 60系列用上可變靈動(dòng)島:正式版體驗(yàn)將會(huì)更出色

    這段時(shí)間以來,關(guān)于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 三星顯示已開始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報(bào)道,隨著蘋果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個(gè)重要的競(jìng)爭(zhēng)領(lǐng)域,對(duì)顯示屏這一關(guān)
  • 電博會(huì)與軟博會(huì)實(shí)現(xiàn)"線下+云端"的雙線融合

    在本次“電博會(huì)”與“軟博會(huì)”雙展會(huì)利好條件的加持下,既可以發(fā)揮展會(huì)拉動(dòng)人流、信息流、資金流實(shí)現(xiàn)快速交互流動(dòng)的作用,繼而推動(dòng)區(qū)域經(jīng)濟(jì)良性發(fā)展;又可以聚
  • Meta盲目擴(kuò)張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創(chuàng)意日前,Meta創(chuàng)始人兼CEO 馬克·扎克伯發(fā)布公開信,宣布Meta計(jì)劃裁員超11000人,占其員工總數(shù)13%。他公開承認(rèn)了自己的預(yù)判失誤:“不僅
Top