最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)建交通工具的實例,調(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 + "在鐵軌上跑");
    }

    /**
     * 飛機
     * @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ā)生變更,該方案改動較大,沒有誤操作風險

總結(jié)

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

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

如何遵守單一職責原則

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

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

相關文章

  • SpringBoot應用War包形式部署到外部Tomcat的方法

    SpringBoot應用War包形式部署到外部Tomcat的方法

    這篇文章主要介紹了SpringBoot應用War包形式部署到外部Tomcat的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 一文帶你看懂Android動畫的實現(xiàn)原理

    一文帶你看懂Android動畫的實現(xiàn)原理

    動畫是 Android 應用程序中重要的交互特性,ndroid 提供了多種動畫效果,包括平移、縮放、旋轉(zhuǎn)和透明度等,它們可以通過代碼或 XML 來實現(xiàn),本文將介紹 Android 動畫的原理和實現(xiàn)方法,并提供一些示例,需要的朋友可以參考下
    2023-07-07
  • springboot實現(xiàn)對注解的切面案例

    springboot實現(xiàn)對注解的切面案例

    這篇文章主要介紹了springboot實現(xiàn)對注解的切面過程,首先定義一個注解、再編寫對注解的切面只是記錄的執(zhí)行時間和打印方法,可以實現(xiàn)其他邏輯,需要的朋友可以參考一下
    2022-01-01
  • Java語法基礎之for語句練習

    Java語法基礎之for語句練習

    以下是對Java語法基礎中的for語句進行了詳細介紹,需要的朋友可以過來參考下
    2013-07-07
  • Spring Data JPA實現(xiàn)動態(tài)條件與范圍查詢實例代碼

    Spring Data JPA實現(xiàn)動態(tài)條件與范圍查詢實例代碼

    本篇文章主要介紹了Spring Data JPA實現(xiàn)動態(tài)條件與范圍查詢實例代碼,非常具有實用價值,需要的朋友可以參考下
    2017-06-06
  • mybatis如何批量更新list對象

    mybatis如何批量更新list對象

    這篇文章主要介紹了mybatis如何批量更新list對象問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java中使用同步回調(diào)和異步回調(diào)的示例詳解

    Java中使用同步回調(diào)和異步回調(diào)的示例詳解

    這篇文章主要介紹了Java中使用同步回調(diào)和異步回調(diào)的相關資料,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 舉例詳解Java編程中HashMap的初始化以及遍歷的方法

    舉例詳解Java編程中HashMap的初始化以及遍歷的方法

    這篇文章主要介紹了Java編程中HashMap的初始化以及遍歷的方法,是Java入門學習中的基礎知識,需要的朋友可以參考下
    2015-11-11
  • Spring中的InitializingBean接口的使用

    Spring中的InitializingBean接口的使用

    這篇文章主要介紹了Spring中的InitializingBean接口的使用,需要的朋友可以參考下
    2018-04-04
  • Spring Security 使用 OncePerRequestFilter 過濾器校驗登錄過期、請求日志等操作

    Spring Security 使用 OncePerRequestFilter 

    OncePerRequestFilter是一個過濾器,每個請求都會執(zhí)行一次;一般開發(fā)中主要是做檢查是否已登錄、Token是否過期和授權(quán)等操作,而每個操作都是一個過濾器,下面介紹Spring Security 使用 OncePerRequestFilter 過濾器校驗登錄過期、請求日志等操作方法,感興趣的朋友一起看看吧
    2024-06-06

最新評論

登封市| 越西县| 瓮安县| 湖南省| 衡水市| 柘荣县| 五华县| 伊吾县| 盘锦市| 塘沽区| 洛扎县| 宁乡县| 新巴尔虎左旗| 密云县| 女性| 黑水县| 新田县| 阳高县| 揭东县| 林口县| 南充市| 凌海市| 花垣县| 寻甸| 靖安县| 迭部县| 绥滨县| 桂平市| 栖霞市| 丰都县| 延边| 呼玛县| 资兴市| 南汇区| 平果县| 疏附县| 太谷县| 淳安县| 信丰县| 十堰市| 蓬莱市|