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

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

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

1、基本介紹

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

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

2、應(yīng)用實(shí)例

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

在方式1的run方法中,飛機(jī)在公路上運(yùn)行。明顯違反了單一責(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("飛機(jī)");
    }
    
    //交通工具類
    static class Vehicle{
        public void run(String vehicle){
            System.out.println(vehicle+"在公路上運(yùn)行...");
        }
    }
}

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

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

但是這樣做改動(dòng)很大,即將類分寫,同時(shí)需要修改客戶端。

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("飛機(jī)");
    }
    static class RoadVehicle {
        public void run(String vehicle) {
            System.out.println(vehicle + "在公路上運(yùn)行...");
        }
    }
    static class AirVehicle {
        public void run(String vehicle) {
            System.out.println(vehicle + "在天上上運(yùn)行...");
        }
    }
}

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

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

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

package com.weirdo.singleResponsibility;

public class SingleResponsibility3 {

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

    static class Vehicle {
        public void runRoad(String vehicle) {
            System.out.println(vehicle + "在公路上運(yùn)行...");
        }
        public void runAir(String vehicle) {
            System.out.println(vehicle + "在公路上運(yùn)行...");
        }
        public void runWater(String vehicle) {
            System.out.println(vehicle + "在水里運(yùn)行...");
        }
    }
}

3、注意事項(xiàng)

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

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

相關(guān)文章

  • RxJava中map和flatMap的用法區(qū)別源碼解析

    RxJava中map和flatMap的用法區(qū)別源碼解析

    這篇文章主要為大家介紹了RxJava中map和flatMap的用法區(qū)別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • JDK都出到14了,你有什么理由不會(huì)函數(shù)式編程(推薦)

    JDK都出到14了,你有什么理由不會(huì)函數(shù)式編程(推薦)

    這篇文章主要介紹了JDK都出到14了,你有什么理由不會(huì)函數(shù)式編程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • java中stack(棧)的使用代碼實(shí)例

    java中stack(棧)的使用代碼實(shí)例

    這篇文章主要介紹了java中stack(棧)的使用代碼實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 詳解如何使用Java編寫圖形化的窗口

    詳解如何使用Java編寫圖形化的窗口

    這篇文章主要介紹了如何使用Java編寫圖形化的窗口,是Java的本地GUI軟件開發(fā)的基礎(chǔ),需要的朋友可以參考下
    2015-10-10
  • Servlet+JavaBean+JSP打造Java Web注冊與登錄功能

    Servlet+JavaBean+JSP打造Java Web注冊與登錄功能

    比作MVC的話,控制器部分采用Servlet來實(shí)現(xiàn),模型部分采用JavaBean來實(shí)現(xiàn),而大部分的視圖采用Jsp頁面來實(shí)現(xiàn),接下來我們就來詳細(xì)看看如何用Servlet+JavaBean+JSP打造Java Web注冊與登錄功能
    2016-05-05
  • Java8新特性之默認(rèn)方法詳解

    Java8新特性之默認(rèn)方法詳解

    JAVA8 所提供的默認(rèn)方法,就是在接口上你可以定義某些方法的實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Java8新特性之默認(rèn)方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段

    java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段

    這篇文章主要為大家詳細(xì)介紹了java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • SpringBoot項(xiàng)目打包war包時(shí)無法運(yùn)行問題的解決方式

    SpringBoot項(xiàng)目打包war包時(shí)無法運(yùn)行問題的解決方式

    在開發(fā)工程中,使用啟動(dòng)類啟動(dòng)能夠正常啟動(dòng)并測試,下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目打包war包時(shí)無法運(yùn)行問題的解決方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • ThreadLocal內(nèi)存泄漏問題解決方案

    ThreadLocal內(nèi)存泄漏問題解決方案

    這篇文章主要介紹了ThreadLocal內(nèi)存泄漏問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理解析

    Java運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理解析

    這篇文章主要介紹了Java運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

方正县| 敦化市| 平邑县| 巫溪县| 沙湾县| 梧州市| 威宁| 黄梅县| 新绛县| 澎湖县| 尼勒克县| 南汇区| 什邡市| 罗平县| 庄浪县| 黔西| 教育| 抚宁县| 称多县| 新疆| 闵行区| 云霄县| 武义县| 云梦县| 柘荣县| 临汾市| 黄龙县| 焦作市| 怀仁县| 岐山县| 交城县| 宜良县| 平遥县| 花莲县| 苍山县| 永靖县| 鄢陵县| 曲阳县| 思南县| 崇仁县| 井陉县|