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

溫馨提示×

溫馨提示×

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

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

Java單一職責原則怎么實現

發布時間:2022-02-09 16:49:25 來源:億速云 閱讀:188 作者:iii 欄目:開發技術

這篇文章主要講解了“Java單一職責原則怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java單一職責原則怎么實現”吧!

1.什么是單一職責原則?

首先我們可以對某個類來說,即一個類應該只負責一項職責。如類A負責兩個不同職責: 職責1,職責2。當職責1需求變更而改變A時,可能造成職責2執行錯誤,所以需要將類A的粒度分解為A1,A2。

我們來看下面這段代碼:????????????

package com.szh.principle.singleresponsibility;
 
/**
 * 交通工具類
 *  方式1
 *  1. 在方式1的run方法中,違反了單一職責原則
 *  2. 解決的方案非常的簡單,根據交通工具運行方法不同,分解成不同類即可
 */
class Vehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + " 在公路上運行....");
    }
}
 
public class SingleResponsibility1 {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("摩托車");
        vehicle.run("汽車");
        vehicle.run("飛機");
        vehicle.run("輪船");
    }
}

乍一看沒什么問題吧,但是我們運行之后,看到的結果似乎就不太合乎思維邏輯了。摩托車、汽車在公路上運行肯定沒問題,但是飛機和輪船呢???(你是故意找茬是不是?)

Java單一職責原則怎么實現

2.改進代碼一

對于上面代碼案例中的問題,想必大家也都看出來了,Vehicle這個類負責的職責太多了,它既要管摩托車、汽車這種在公路上跑的,還要去管飛機這種在天上飛的,這就使得Vehicle這個類粒度太粗了,后期如果做出對公路方法的修改時,可能還會影響到其他的業務功能。

所以我們考慮將Vehicle這個類進行分解,分解為多個類,各干各的、各司其職。

package com.szh.principle.singleresponsibility;
 
/**
 * 方案2的分析
 *   1. 遵守單一職責原則
 *   2. 但是這樣做的改動很大,即將類分解,同時修改客戶端
 *   3. 改進:直接修改Vehicle 類,改動的代碼會比較少=>方案3
 */
class RoadVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在公路運行");
    }
}
 
class AirVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在天空運行");
    }
}
 
class WaterVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在水中運行");
    }
}
 
public class SingleResponsibility2 {
    public static void main(String[] args) {
        RoadVehicle roadVehicle = new RoadVehicle();
        roadVehicle.run("摩托車");
        roadVehicle.run("汽車");
 
        AirVehicle airVehicle = new AirVehicle();
        airVehicle.run("飛機");
 
        WaterVehicle waterVehicle = new WaterVehicle();
        waterVehicle.run("輪船");
    }
}

此時,我們將Vehicle拆解成了三個不同的類,再次運行。這樣看起來就正常了吧。

不過也有人說,這樣的改動比較大,也即直接在類的層面上做了修改,我們能不能不改動這個類,而是對它的方法做修改呢?答案是可以的。

Java單一職責原則怎么實現

3.改進代碼二

package com.szh.principle.singleresponsibility;
 
/**
 * 方式3的分析
 *   1. 這種修改方法沒有對原來的類做大的修改,只是增加方法
 *   2. 這里雖然沒有在類這個級別上遵守單一職責原則,但是在方法級別上,仍然是遵守單一職責
 */
class Vehicle2 {
    public void runRoad(String vehicle) {
        System.out.println(vehicle + " 在公路上運行....");
    }
 
    public void runAir(String vehicle) {
        System.out.println(vehicle + " 在天空上運行....");
    }
 
    public void runWater(String vehicle) {
        System.out.println(vehicle + " 在水中行....");
    }
}
 
public class SingleResponsibility3 {
    public static void main(String[] args) {
        Vehicle2 vehicle2  = new Vehicle2();
        vehicle2.runRoad("汽車");
        vehicle2.runAir("飛機");
        vehicle2.runWater("輪船");
    }
 
}

此時我們并未將類進行拆解,而是將之前的run方法進行了拆解,雖然這樣的代碼沒有在類的層面上遵守單一職責原則,但是它卻在方法層面上遵守了單一職責原則,同樣可以做到正確的結果。

Java單一職責原則怎么實現

感謝各位的閱讀,以上就是“Java單一職責原則怎么實現”的內容了,經過本文的學習后,相信大家對Java單一職責原則怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

筠连县| 奉节县| 河源市| 馆陶县| 福建省| 晋城| 青冈县| 扎赉特旗| 叙永县| 成安县| 桐梓县| 高平市| 驻马店市| 延长县| 阿鲁科尔沁旗| 赤城县| 明光市| 乡城县| 资阳市| 兰州市| 乌审旗| 双江| 武山县| 富宁县| 德昌县| 汤阴县| 荥阳市| 库伦旗| 姚安县| 常宁市| 镇赉县| 辽宁省| 瑞丽市| 如东县| 台山市| 托克托县| 宝鸡市| 青浦区| 嵩明县| 和静县| 江山市|