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

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

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

定義

單一職責(zé)原則(Single Responsibility Principle, SRP),有且僅有一個(gè)原因引起類的變更。簡(jiǎn)單來(lái)說(shuō),就是針對(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)較大,沒(méi)有誤操作風(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ì)越大,變化帶來(lái)的風(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)文章

  • SpringBoot應(yīng)用War包形式部署到外部Tomcat的方法

    SpringBoot應(yīng)用War包形式部署到外部Tomcat的方法

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

    一文帶你看懂Android動(dòng)畫的實(shí)現(xiàn)原理

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

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

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

    Java語(yǔ)法基礎(chǔ)之for語(yǔ)句練習(xí)

    以下是對(duì)Java語(yǔ)法基礎(chǔ)中的for語(yǔ)句進(jìn)行了詳細(xì)介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-07-07
  • Spring Data JPA實(shí)現(xiàn)動(dòng)態(tài)條件與范圍查詢實(shí)例代碼

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

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

    mybatis如何批量更新list對(duì)象

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

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

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

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

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

    Spring中的InitializingBean接口的使用

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

    Spring Security 使用 OncePerRequestFilter 

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

最新評(píng)論

东兴市| 麦盖提县| 怀安县| 曲水县| 宣化县| 台中市| 饶阳县| 吉水县| 邯郸市| 顺昌县| 金川县| 常熟市| 南宁市| 西峡县| 南召县| 罗源县| 潍坊市| 苍溪县| 静宁县| 万山特区| 噶尔县| 察雅县| 依安县| 寻乌县| 苍山县| 偏关县| 大港区| 蓝田县| 旌德县| 湘西| 民勤县| 济南市| 宁远县| 读书| 宝山区| 壤塘县| 宁晋县| 南澳县| 辉南县| 沂源县| 团风县|