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

Java設(shè)計模式中的單一責(zé)任原則詳解

 更新時間:2023年11月09日 11:17:28   作者:一只小熊貓呀  
這篇文章主要介紹了Java設(shè)計模式中的單一責(zé)任原則詳解,應(yīng)該有且僅有一個原因引起類的變更,即單一指責(zé)原則要求一個借口或類只有一個原因引起變化,也就是一個接口或類只有一個職責(zé),它就負(fù)責(zé)一件事情,需要的朋友可以參考下

1、基本介紹

對類來說,即一個類應(yīng)該只負(fù)責(zé)一項職責(zé)。

如類A負(fù)責(zé)兩個不同職責(zé):職責(zé)1,職責(zé)2。當(dāng)職責(zé)1需求變更而改變A時,可能造成職責(zé)2執(zhí)行錯誤,所以需要將類A的粒度分為A1,A2

2、應(yīng)用實例

2.1未遵循單一責(zé)任原則

在方式1的run方法中,飛機在公路上運行。明顯違反了單一責(zé)任原則

package com.weirdo.principle.singleResponsibility;

public class SingleResponsibility1 {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("摩托車");
        vehicle.run("汽車");
        vehicle.run("飛機");
    }
    
    //交通工具類
    static class Vehicle{
        public void run(String vehicle){
            System.out.println(vehicle+"在公路上運行...");
        }
    }
}

2.2遵循單一責(zé)任原則(類級)

遵守單一責(zé)任原則。

但是這樣做改動很大,即將類分寫,同時需要修改客戶端。

package com.weirdo.singleResponsibility;

public class SingleResponsibility2 {
    public static void main(String[] args) {
        RoadVehicle roadVehicle = new RoadVehicle();
        roadVehicle.run("摩托車");
        roadVehicle.run("汽車");
        AirVehicle airVehicle = new AirVehicle();
        airVehicle.run("飛機");
    }
    static class RoadVehicle {
        public void run(String vehicle) {
            System.out.println(vehicle + "在公路上運行...");
        }
    }
    static class AirVehicle {
        public void run(String vehicle) {
            System.out.println(vehicle + "在天上上運行...");
        }
    }
}

2.3遵循單一責(zé)任原則(方法級)

這種修改方法沒有對原來的類做大的修改,只是增加方法。

然沒有在類這個級別上遵守單一責(zé)任原則,但是在方法級別上仍然是遵守單一責(zé)任

package com.weirdo.singleResponsibility;

public class SingleResponsibility3 {

    public static void main(String[] args) {
        Vehicle  vehicle = new Vehicle();
        vehicle.runAir("飛機");
        vehicle.runRoad("汽車");
        vehicle.runWater("航母");
    }

    static class Vehicle {
        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 + "在水里運行...");
        }
    }
}

3、注意事項

  • 降低類的復(fù)雜都,一個類只負(fù)責(zé)一項職責(zé)
  • 提高類的可讀性,可維護(hù)性
  • 通常情況下,應(yīng)該遵守單一責(zé)任原則。只有邏輯足夠簡單,才可以在代碼級違反單一責(zé)任原則:只有類中方法數(shù)量足夠少??梢栽诜椒墑e保持單一責(zé)任原則

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

相關(guān)文章

  • Java線程通信之wait-notify通信方式詳解

    Java線程通信之wait-notify通信方式詳解

    這篇文章主要為大家詳細(xì)介紹了Java線程通信之wait-notify通信方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 淺談cookie和session(小結(jié))

    淺談cookie和session(小結(jié))

    這篇文章主要介紹了淺談cookie和session(小結(jié)),cookie和session在java web開發(fā)中扮演了十分重要的作用,本篇文章對其中的重要知識點做一些探究和總結(jié)
    2018-11-11
  • 詳解SpringMVC中的日期處理和文件上傳操作

    詳解SpringMVC中的日期處理和文件上傳操作

    這篇文章主要為大家詳細(xì)介紹了SpringMVC中的日期處理和文件上傳操作方法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定借鑒價值,需要的可以參考一下
    2022-08-08
  • SpringMVC執(zhí)行過程詳細(xì)講解

    SpringMVC執(zhí)行過程詳細(xì)講解

    MVC是一種軟件設(shè)計典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個組件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯,MVC分層有助于管理和架構(gòu)復(fù)雜的應(yīng)用程序
    2022-08-08
  • JAVA三種異常處理機制的具體使用

    JAVA三種異常處理機制的具體使用

    異常是程序在編譯或執(zhí)行的過程中可能出現(xiàn)的問題,本文主要介紹了JAVA三種異常處理機制的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • kafka生產(chǎn)者和消費者的javaAPI的示例代碼

    kafka生產(chǎn)者和消費者的javaAPI的示例代碼

    這篇文章主要介紹了kafka生產(chǎn)者和消費者的javaAPI的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • SpringBoot+jpa配置如何根據(jù)實體類自動創(chuàng)建表

    SpringBoot+jpa配置如何根據(jù)實體類自動創(chuàng)建表

    這篇文章主要介紹了SpringBoot+jpa配置如何根據(jù)實體類自動創(chuàng)建表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java調(diào)用elasticsearch本地代碼的操作方法

    Java調(diào)用elasticsearch本地代碼的操作方法

    這篇文章主要介紹了Java調(diào)用elasticsearch本地代碼的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Jasypt的StandardPBEByteEncryptor使用源碼解析

    Jasypt的StandardPBEByteEncryptor使用源碼解析

    這篇文章主要介紹了Jasypt的StandardPBEByteEncryptor使用源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java語言之包和繼承詳解

    Java語言之包和繼承詳解

    這篇文章主要介紹了java的包和繼承,結(jié)合實例形式詳細(xì)分析了Java繼承的概念、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2021-09-09

最新評論