亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java設(shè)計(jì)模式七大原則之單一職責(zé)原則詳解

 更新時(shí)間:2022年02月09日 09:30:24   作者:溫故知新之java  
單一職責(zé)原則(Single Responsibility Principle, SRP),有且僅有一個(gè)原因引起類的變更。簡(jiǎn)單來說,就是針對(duì)一個(gè)java類,它應(yīng)該只負(fù)責(zé)一項(xiàng)職責(zé)。本文將詳細(xì)介紹一下Java設(shè)計(jì)模式七大原則之一的單一職責(zé)原則,需要的可以參考一下

定義

單一職責(zé)原則(Single Responsibility Principle, SRP),有且僅有一個(gè)原因引起類的變更。簡(jiǎn)單來說,就是針對(duì)一個(gè)java類,它應(yīng)該只負(fù)責(zé)一項(xiàng)職責(zé)。例如一個(gè)Test.java類,它有兩個(gè)職責(zé):職責(zé)1,職責(zé)2。當(dāng)職責(zé)1進(jìn)行修改時(shí),有可能影響到職責(zé)2,所以需要將Test.java類拆分成Test1.java和Test2.java兩個(gè)單一職責(zé)的類。

案例

需求

有一個(gè)交通工具類,里面定義一個(gè)在各種交通工具的方法,創(chuàng)建交通工具的實(shí)例,調(diào)用方法,方法內(nèi)執(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 + "在鐵軌上跑");
    }

    /**
     * 飛機(jī)
     * @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 + "在天上飛");
    }

定義測(cè)試類Test1.java

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

方案二

定義汽車類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 + "在鐵軌上跑");
    }
}

定義飛機(jī)類Airplane.java

public class Airplane {

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

定義測(cè)試類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("飛機(jī)");
    }
}

對(duì)比分析

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

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

總結(jié)

從以上的案例中總結(jié),可以得出:

  • 降低類的復(fù)雜度,一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé) (一個(gè)類職責(zé)少了,相應(yīng)的復(fù)雜度不就低了嘛)
  • 提高類的可讀性以及可維護(hù)性 (相應(yīng)的復(fù)雜度降低了,代碼量就會(huì)減少,可讀性也就提高了,可維護(hù)性自然也就提高了)
  • 降低變更引起的風(fēng)險(xiǎn) (一個(gè)類職責(zé)越多,變更的可能性就會(huì)越大,變化帶來的風(fēng)險(xiǎn)就會(huì)越大)
  • 通常情況下,我們應(yīng)當(dāng)遵守類級(jí)別單一職責(zé)原則 (只有邏輯足夠簡(jiǎn)單,才可以在代碼中違反單一職責(zé)原則)

如何遵守單一職責(zé)原則

從業(yè)務(wù)出發(fā),從需求出發(fā),識(shí)別出同一個(gè)類型的職責(zé),進(jìn)行合理的職責(zé)分解。

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

相關(guān)文章

  • 解析Java內(nèi)存分配和回收策略以及MinorGC、MajorGC、FullGC

    解析Java內(nèi)存分配和回收策略以及MinorGC、MajorGC、FullGC

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

    Java?詳解Map集合之HashMap和TreeMap

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

    Springboot2整合knife4j過程解析

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

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

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

    Java正則表達(dá)式的基本用法和實(shí)例大全

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

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

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

    解決mybatis-plus3.1.1版本使用lambda表達(dá)式查詢報(bào)錯(cuò)的方法

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

    java中DecimalFormat四舍五入用法詳解

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

    關(guān)于struts2中Action名字的大小寫問題淺談

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

    阿里云部署SpringBoot項(xiàng)目啟動(dòng)后被殺進(jìn)程的問題解析

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

最新評(píng)論