91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java接口隔離原則實例分析

發布時間:2022-02-10 13:45:49 來源:億速云 閱讀:145 作者:iii 欄目:開發技術

這篇“Java接口隔離原則實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java接口隔離原則實例分析”文章吧。

定義

接口隔離原則(Interface Segregation Principle),又稱為ISP原則,官方定義為

1.客戶端不應該依賴它不需要的接口

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

簡單點來講就是在一個類中不要定義過多的方法,接口應該盡量簡單細化

案例

需求

假設有這樣一個案例場景,現在有一個接口Repair,給定他有三個能力,可以修汽車,修火車,修飛機, 兩個實現類張師傅,李師傅分別具有這些能力,有一個4S店類,假設是需要張師傅來修汽車和修飛機,而另一個4s店類需要李師傅來修汽車和修火車

方案一

定義維修接口類Repair.java

/**
 * 維修類
 * @author:liyajie
 * @createTime:2022/1/29 17:00
 * @version:1.0
 */
public interface Repair {

    /**
     * 維修汽車
     * @author: liyajie
     * @date: 2022/1/29 17:03
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    void car();

    /**
     * 維修火車
     * @author: liyajie
     * @date: 2022/1/29 17:03
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    void train();

    /**
     * 維修飛機
     * @author: liyajie
     * @date: 2022/1/29 17:03
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    void air();
}

維修李師傅類RepairLi.java

/**
 * 維修類
 * @author:liyajie
 * @createTime:2022/1/29 17:00
 * @version:1.0
 */
public class RepairLi implements Repair{


    @Override
    public void car() {
        System.out.println("李師傅修汽車");
    }

    @Override
    public void train() {
        System.out.println("李師傅修火車");
    }

    @Override
    public void air() {
        System.out.println("李師傅修飛機");
    }
}

維修王師傅類RepairWang.java

/**
 * 維修類
 * @author:liyajie
 * @createTime:2022/1/29 17:00
 * @version:1.0
 */
public class RepairWang implements Repair{

    @Override
    public void car() {
        System.out.println("王師傅修汽車");
    }

    @Override
    public void train() {
        System.out.println("王師傅修火車");
    }

    @Override
    public void air() {
        System.out.println("王師傅修飛機");
    }
}

4s店1

/**
 * 4s店1
 * @author:liyajie
 * @createTime:2022/1/29 17:07
 * @version:1.0
 */
public class S1Shop {

    /**
     * 修汽車
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repair
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void car(Repair repair){
        repair.car();
    }

    /**
     * 修火車
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repair
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void train(Repair repair){
        repair.train();
    }
}

4s店2

/**
 * 4s店2
 * @author:liyajie
 * @createTime:2022/1/29 17:07
 * @version:1.0
 */
public class S2Shop {
    /**
     * 修汽車
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repair
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void car(Repair repair){
        repair.car();
    }

    /**
     * 修飛機
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repair
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void air(Repair repair){
        repair.air();
    }
}

測試類1

/**
 * 測試類1
 * @author:liyajie
 * @createTime:2022/1/29 16:46
 * @version:1.0
 */
public class Test1 {
    public static void main(String[] args) {
        // 4s店1
        new S1Shop().car(new RepairLi());
        new S1Shop().train(new RepairLi());

        // 4s店2
        new S2Shop().car(new RepairWang());
        new S2Shop().air(new RepairWang());
    }
}

方案二

定義維修汽車接口

/**
 * 維修類
 * @author:liyajie
 * @createTime:2022/1/29 17:00
 * @version:1.0
 */
public interface RepairCar {

    /**
     * 維修汽車
     * @author: liyajie
     * @date: 2022/1/29 17:03
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    void car();
}

定義維修火車類

/**
 * 維修類
 * @author:liyajie
 * @createTime:2022/1/29 17:00
 * @version:1.0
 */
public interface RepairTrain {

    /**
     * 維修火車
     * @author: liyajie
     * @date: 2022/1/29 17:03
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    void train();
}

定義維修飛機類

/**
 * 維修類
 * @author:liyajie
 * @createTime:2022/1/29 17:00
 * @version:1.0
 */
public interface RepairAir {

    /**
     * 維修飛機
     * @author: liyajie
     * @date: 2022/1/29 17:03
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    void air();
}

4s店1

/**
 * 4s店1
 * @author:liyajie
 * @createTime:2022/1/29 17:07
 * @version:1.0
 */
public class S1ShopNew {

    /**
     * 修汽車
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repairCar
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void car(RepairCar repairCar){
        repairCar.car();
    }

    /**
     * 修火車
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repairTrain
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void train(RepairTrain repairTrain){
        repairTrain.train();
    }
}

4s店2

/**
 * 4s店2
 * @author:liyajie
 * @createTime:2022/1/29 17:07
 * @version:1.0
 */
public class S2ShopNew {
    /**
     * 修汽車
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repairCar
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void car(RepairCar repairCar){
        repairCar.car();
    }

    /**
     * 修飛機
     * @author: liyajie
     * @date: 2022/1/29 17:10
     * @param repairAir
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void air(RepairAir repairAir){
        repairAir.air();
    }
}

測試類

/**
 * 測試類1
 * @author:liyajie
 * @createTime:2022/1/29 16:46
 * @version:1.0
 */
public class Test2 {
    public static void main(String[] args) {
        // 4s店1
        new S1ShopNew().car(new RepairLiNew());
        new S1ShopNew().train(new RepairLiNew());

        // 4s店2
        new S2ShopNew().car(new RepairWangNew());
        new S2ShopNew().air(new RepairWangNew());
    }
}

對比分析

方案一,違反了接口隔離原則,因為李師傅和王師傅都實現了維修接口的三個方法:修汽車,修火車,修飛機。但需求中并不需要這么多,只需要李師傅修汽車和火車,王師傅修汽車和飛機,依賴關系不是建立在最小接口上

方案二,遵守了接口隔離原則,對李師傅和王師傅類都進行了接口隔離,實現了各自的兩個方法,避免了耦合

以上就是關于“Java接口隔離原則實例分析”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

临洮县| 永新县| 南丰县| 正蓝旗| 沈丘县| 天等县| 项城市| 萍乡市| 阿拉善右旗| 衡东县| 大石桥市| 若羌县| 江油市| 微博| 博爱县| 宝坻区| 宜丰县| 双峰县| 陇南市| 同江市| 青阳县| 漳州市| 长沙市| 高要市| 桂林市| 社旗县| 会东县| 加查县| 泽普县| 吉隆县| 岐山县| 呈贡县| 汉中市| 黄冈市| 宜兴市| 长治县| 凤翔县| 崇义县| 晋宁县| 上饶市| 靖边县|