亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java面向對象的接口隔離原則怎么實現

發布時間:2022-01-14 11:06:40 來源:億速云 閱讀:132 作者:iii 欄目:大數據

本篇內容主要講解“Java面向對象的接口隔離原則怎么實現”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java面向對象的接口隔離原則怎么實現”吧!

定義

Interface Segregation Principle

  • 客戶端不應依賴它不需要的接口

  • 類間的依賴關系應該建立在最小的接口上

其實通俗來理解就是,不要在一個接口里面放很多的方法,這樣會顯得這個類很臃腫。接口應該盡量細化,一個接口對應一個功能模塊,同時接口里面的方法應該盡可能的少,使接口更加靈活輕便。或許有的人認為接口隔離原則和單一職責原則很像,但兩個原則還是存在著明顯的區別。單一職責原則是在業務邏輯上的劃分,注重的是職責。接口隔離原則是基于接口設計考慮。例如一個接口的職責包含10個方法,這10個方法都放在同一接口中,并且提供給多個模塊調用,但不同模塊需要依賴的方法是不一樣的,這時模塊為了實現自己的功能就不得不實現一些對其沒有意義的方法,這樣的設計是不符合接口隔離原則的。接口隔離原則要求"盡量使用多個專門的接口"專門提供給不同的模塊。 

由來

類A通過接口I依賴類B,類C通過接口I依賴類D,如果接口I對于類A和類B來說不是最小接口,則類B和類D必須去實現他們不需要的方法。

Java面向對象的接口隔離原則怎么實現    

舉例:

public interface School {

    /**
     * 上課
     */
    void attendClass();

    /**
     * 下課
     */
    void afterClass();

    /**
     * 學習
     */
    void learn();

    /**
     * 講課
     */
    void lecture();
}
 

假設此時有一個People類,它的角色是學生,實現了School接口。它就會被迫實現“講課”這個方法,事實它是不需要該方法的。這就造成了代碼的冗余,使我們的代碼變得臃腫。 

解決

將臃腫的接口I拆分為獨立的幾個接口,類A和類C分別與他們需要的接口建立依賴關系。

Java面向對象的接口隔離原則怎么實現    

舉例:
學校接口

public interface School {

    /**
     * 上課
     */
    void attendClass();

    /**
     * 下課
     */
    void afterClass();

}
 

老師接口

public interface Teacher {

    /**
     * 講課
     */
    void lecture();
}
 

學生接口

public interface School {

    /**
     * 學習
     */
    void learn();

}

通過上面的拆分我們就可以有效避免冗余代碼的產生,進而還可以促使我們的代碼變得更加靈活。 

優點 

避免接口污染

一個類如果要實現一個接口,那么就要實現這個接口要求的所有方法,如果這個接口里面包含這個類不需要的方法,那么就會造成接口污染,這是不好的設計,會對系統留下隱患。 

提高靈活性

一個類是可以同時實現多個接口的,所以將一個臃腫的接口分割為若干個小接口,通過小接口的不同組合可以滿足更多的需求。 

提供定制服務

定制服務就是單獨為一個個體提供優良的服務。我們在做系統設計時也需要考慮對系統之間或模塊之間的接口提供定制服務。提供定制服務就必然有一個需求:只提供訪問者需要的方法。這也是可以通過細化接口實現的。 

高內聚

什么是高內聚?高內聚就是提高接口、類、模塊的處理能力,減少對外的交互。比如說,你告訴你的下屬“一個小時之內去月球搬一塊石頭回來”,然后你就躺在海灘上曬著太陽喝著果汁,一個小時之后你的下屬就搬著一塊月亮上的石頭回來給你了。這種不講任何條件,不需要你關心任何細節,立即完成任務的行為就是高內聚的表現。

具體到接口中,還是盡量細化你的接口。接口是對外界的承諾,承諾越少對系統的開發越有利,變更的風險也就越少,同時也有利于降低成本。

到此,相信大家對“Java面向對象的接口隔離原則怎么實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆回县| 贵阳市| 商洛市| 伊金霍洛旗| 六安市| 皮山县| 青冈县| 沂南县| 克山县| 宁陕县| 菏泽市| 探索| 南宁市| 静乐县| 思南县| 卢氏县| 新平| 青州市| 连州市| 西乌| 泰和县| 威信县| 精河县| 泾源县| 台北县| 微山县| 雅江县| 古浪县| 阿拉善右旗| 余庆县| 扶沟县| 吴川市| 南召县| 罗定市| 永和县| 都昌县| 拉孜县| 繁昌县| 保德县| 祥云县| 阿拉善盟|