Java设计模式中的单一责任原则详解

 更新时间:2023年11月09日 11:17:28   作者:一只小熊猫呀  
这篇文章主要介绍了Java设计模式中的单一责任原则详解,应该有且仅有一个原因引起类的变更,即单一指责原则要求一个借口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情,需要的朋友可以参考下

1、基本介绍

对类来说,即一个类应该只负责一项职责。

如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分为A1,A2

2、应用实例

2.1未遵循单一责任原则

在方式1的run方法中,飞机在公路上运行。明显违反了单一责任原则

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遵循单一责任原则(类级)

遵守单一责任原则。

但是这样做改动很大,即将类分写,同时需要修改客户端。

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遵循单一责任原则(方法级)

这种修改方法没有对原来的类做大的修改,只是增加方法。

然没有在类这个级别上遵守单一责任原则,但是在方法级别上仍然是遵守单一责任

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、注意事项

  • 降低类的复杂都,一个类只负责一项职责
  • 提高类的可读性,可维护性
  • 通常情况下,应该遵守单一责任原则。只有逻辑足够简单,才可以在代码级违反单一责任原则:只有类中方法数量足够少。可以在方法级别保持单一责任原则

到此这篇关于Java设计模式中的单一责任原则详解的文章就介绍到这了,更多相关Java单一责任原则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • RxJava中map和flatMap的用法区别源码解析

    RxJava中map和flatMap的用法区别源码解析

    这篇文章主要为大家介绍了RxJava中map和flatMap的用法区别源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • JDK都出到14了,你有什么理由不会函数式编程(推荐)

    JDK都出到14了,你有什么理由不会函数式编程(推荐)

    这篇文章主要介绍了JDK都出到14了,你有什么理由不会函数式编程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • java中stack(栈)的使用代码实例

    java中stack(栈)的使用代码实例

    这篇文章主要介绍了java中stack(栈)的使用代码实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 详解如何使用Java编写图形化的窗口

    详解如何使用Java编写图形化的窗口

    这篇文章主要介绍了如何使用Java编写图形化的窗口,是Java的本地GUI软件开发的基础,需要的朋友可以参考下
    2015-10-10
  • Servlet+JavaBean+JSP打造Java Web注册与登录功能

    Servlet+JavaBean+JSP打造Java Web注册与登录功能

    比作MVC的话,控制器部分采用Servlet来实现,模型部分采用JavaBean来实现,而大部分的视图采用Jsp页面来实现,接下来我们就来详细看看如何用Servlet+JavaBean+JSP打造Java Web注册与登录功能
    2016-05-05
  • Java8新特性之默认方法详解

    Java8新特性之默认方法详解

    JAVA8 所提供的默认方法,就是在接口上你可以定义某些方法的实现,下面这篇文章主要给大家介绍了关于Java8新特性之默认方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • java web将数据导出为pdf格式文件代码片段

    java web将数据导出为pdf格式文件代码片段

    这篇文章主要为大家详细介绍了java web将数据导出为pdf格式文件代码片段,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • SpringBoot项目打包war包时无法运行问题的解决方式

    SpringBoot项目打包war包时无法运行问题的解决方式

    在开发工程中,使用启动类启动能够正常启动并测试,下面这篇文章主要给大家介绍了关于SpringBoot项目打包war包时无法运行问题的解决方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • ThreadLocal内存泄漏问题解决方案

    ThreadLocal内存泄漏问题解决方案

    这篇文章主要介绍了ThreadLocal内存泄漏问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java运行时数据区划分原理解析

    Java运行时数据区划分原理解析

    这篇文章主要介绍了Java运行时数据区划分原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论