欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設計模式七大原則之單一職責原則詳解

 更新時間:2022年02月09日 09:30:24   作者:溫故知新之java  
單一職責原則(Single Responsibility Principle, SRP),有且僅有一個原因引起類的變更。簡單來說,就是針對一個java類,它應該只負責一項職責。本文將詳細介紹一下Java設計模式七大原則之一的單一職責原則,需要的可以參考一下

定義

單一職責原則(Single Responsibility Principle, SRP),有且僅有一個原因引起類的變更。簡單來說,就是針對一個java類,它應該只負責一項職責。例如一個Test.java類,它有兩個職責:職責1,職責2。當職責1進行修改時,有可能影響到職責2,所以需要將Test.java類拆分成Test1.java和Test2.java兩個單一職責的類。

案例

需求

有一個交通工具類,里面定義一個在各種交通工具的方法,創(chuàng)建交通工具的實例,調用方法,方法內執(zhí)行打印操作

方案一

定義交通工具類Transportation.java

public class Transportation {

    /**
     * 汽車
     * @author: liyajie
     * @date: 2022/1/28 14:45
     * @param car
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public static void car(String car) {
        System.out.println(car + "在公路上跑");
    }

    /**
     * 火車
     * @author: liyajie
     * @date: 2022/1/28 14:45
     * @param train
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public static void train(String train) {
        System.out.println(train + "在鐵軌上跑");
    }

    /**
     * 飛機
     * @author: liyajie
     * @date: 2022/1/28 14:45
     * @param airplane
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public static void airplane(String airplane) {
        System.out.println(airplane + "在天上飛");
    }

定義測試類Test1.java

public class Test1 {
    public static void main(String[] args) {
        Transportation transportation1 = new Transportation();
        transportation1.car("汽車");
        transportation1.train("火車");
        transportation1.airplane("飛機");
    }
}

方案二

定義汽車類Car.java

public class Car {

    /**
     * 汽車
     * @author: liyajie
     * @date: 2022/1/28 14:45
     * @param car
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void car(String car) {
        System.out.println(car + "在公路上跑");
    }
}

定義火車類Train.java

public class Train {

    /**
     * 火車
     * @author: liyajie
     * @date: 2022/1/28 14:45
     * @param train
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void train(String train) {
        System.out.println(train + "在鐵軌上跑");
    }
}

定義飛機類Airplane.java

public class Airplane {

    /**
     * 飛機
     * @author: liyajie
     * @date: 2022/1/28 14:45
     * @param airplane
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void airplane(String airplane) {
        System.out.println(airplane + "在天上飛");
    }
}

定義測試類Test2.java

public class Test2 {
    public static void main(String[] args) {
        Car car = new Car();
        car.car("汽車");

        Train train = new Train();
        train.train("火車");

        Airplane airplane = new Airplane();
        airplane.airplane("飛機");
    }
}

對比分析

方案一,是將汽車,火車,飛機的方法都寫在了同一個類里,但是每個交通工具都有自己的方法,做到了方法上的單一職責,如果發(fā)生變更,該方案改動較小,但有一定的誤操作風險

方案二,是將汽車,火車,飛機分別創(chuàng)建三個類,每個類里只有一種交通工具的方法,做到了類上的單一職責,如果發(fā)生變更,該方案改動較大,沒有誤操作風險

總結

從以上的案例中總結,可以得出:

  • 降低類的復雜度,一個類只負責一項職責 (一個類職責少了,相應的復雜度不就低了嘛)
  • 提高類的可讀性以及可維護性 (相應的復雜度降低了,代碼量就會減少,可讀性也就提高了,可維護性自然也就提高了)
  • 降低變更引起的風險 (一個類職責越多,變更的可能性就會越大,變化帶來的風險就會越大)
  • 通常情況下,我們應當遵守類級別單一職責原則 (只有邏輯足夠簡單,才可以在代碼中違反單一職責原則)

如何遵守單一職責原則

從業(yè)務出發(fā),從需求出發(fā),識別出同一個類型的職責,進行合理的職責分解。

到此這篇關于Java設計模式七大原則之單一職責原則詳解的文章就介紹到這了,更多相關Java單一職責原則內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解析Java內存分配和回收策略以及MinorGC、MajorGC、FullGC

    解析Java內存分配和回收策略以及MinorGC、MajorGC、FullGC

    本節(jié)將會介紹一下:對象的內存分配與回收策略;對象何時進入新生代、老年代;MinorGC、MajorGC、FullGC的定義區(qū)別和觸發(fā)條件;還有通過圖示展示了GC的過程。
    2021-09-09
  • Java?詳解Map集合之HashMap和TreeMap

    Java?詳解Map集合之HashMap和TreeMap

    本章具體介紹了HashMap、TreeMap兩種集合的基本使用方法和區(qū)別,圖解穿插代碼實現(xiàn)。?JAVA成仙路從基礎開始講,后續(xù)會講到JAVA高級,中間會穿插面試題和項目實戰(zhàn),希望能給大家?guī)韼椭?/div> 2022-03-03
  • Springboot2整合knife4j過程解析

    Springboot2整合knife4j過程解析

    這篇文章主要介紹了Springboot2整合knife4j過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • mybatis攔截器注冊初始化編寫示例及如何生效詳解

    mybatis攔截器注冊初始化編寫示例及如何生效詳解

    這篇文章主要為大家介紹了mybatis攔截器注冊初始化編寫示例及如何生效詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java正則表達式的基本用法和實例大全

    Java正則表達式的基本用法和實例大全

    這篇文章主要給大家介紹了關于Java正則表達式的基本用法和實例的相關資料,大家在使用Java正則表達式的時候可查閱這篇文章,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • Java基于NIO實現(xiàn)群聊功能

    Java基于NIO實現(xiàn)群聊功能

    這篇文章主要為大家詳細介紹了Java基于NIO實現(xiàn)群聊功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 解決mybatis-plus3.1.1版本使用lambda表達式查詢報錯的方法

    解決mybatis-plus3.1.1版本使用lambda表達式查詢報錯的方法

    這篇文章主要介紹了解決mybatis-plus3.1.1版本使用lambda表達式查詢報錯的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • java中DecimalFormat四舍五入用法詳解

    java中DecimalFormat四舍五入用法詳解

    這篇文章主要為大家詳細介紹了java中DecimalFormat四舍五入的用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 關于struts2中Action名字的大小寫問題淺談

    關于struts2中Action名字的大小寫問題淺談

    這篇文章主要給大家介紹了關于struts2中Action名字大小寫問題的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
    2017-06-06
  • 阿里云部署SpringBoot項目啟動后被殺進程的問題解析

    阿里云部署SpringBoot項目啟動后被殺進程的問題解析

    這篇文章主要介紹了阿里云部署SpringBoot項目啟動后被殺進程的問題,本文給大家分享問題原因所在及解決步驟,需要的朋友可以參考下
    2023-09-09

最新評論