美文网首页
面向对象设计--单一职责原则

面向对象设计--单一职责原则

作者: NealLemon | 来源:发表于2019-02-28 19:07 被阅读0次

定义

  • Do one things,and do it well.
  • 一个类、接口、方法只负责一项职责。

代码理解

这个原则其实很简单,就是一个类、接口、方法只负责一项职责。

场景

比如我们日常生活中的紧急呼叫 报警:110,火警电话:119,急救电话:120 。下面让我们用JAVA实现一下这个场景。

错误实现

定义一个 紧急呼叫的类。其中有呼叫的方法,根据呼叫的电话号码来判断呼叫的类型。

/**
 * @ClassName EmergencyCall
 * @Description 紧急呼叫类
 * @Author Neal
 * @Date 2019/2/28 15:37
 * @Version 1.0
 */
public class EmergencyCall {

    /**
     * 拨打紧急电话
     * @param type
     */
    public void call(int phoneNum) {
        if(phoneNum == 110) {
            System.out.println("拨打报警电话");
        }else if(phoneNum == 120) {
            System.out.println("拨打火警电话");
        }else if(phoneNum == 119) {
            System.out.println("拨打急救电话");
        }else{
            System.out.println("未知呼叫");
        }
    }

}

这种方式虽然一个方法实现了所有的场景要求,但是有一个弊端,如果我们出国,那么紧急呼叫必然不是这些电话,所以我们要新增呼叫电话和类型,这样有可能会影响或者与之前的呼叫类型冲突,所以我们就需要遵循单一职责原则。

单一职责

1.定义紧急呼叫接口

/**
 * @InterfaceName ICall
 * @Description 呼叫接口
 * @Author Neal
 * @Date 2019/2/28 16:28
 * @Version 1.0
 */
public interface ICall {
    void call();
}

2.单独的报警类以及单独的火警类

/**
 * @ClassName CallPolice
 * @Description 报警
 * @Author Neal
 * @Date 2019/2/28 16:29
 * @Version 1.0
 */
public class CallPolice implements ICall {

    public void call() {
        System.out.println("拨打报警电话");
    }
}
/**
 * @ClassName CallFireBrigade
 * @Description 火警
 * @Author Neal
 * @Date 2019/2/28 16:31
 * @Version 1.0
 */
public class CallFireBrigade implements ICall {

    public void call() {
        System.out.println("拨打火警电话");
    }
}

这种就是单一职责原则的一种实现,这种实现虽然创建了很多类,但是每个类单独负责一个职责,如果要在火警中增加灭火方法。那么只需要找到火警的类,去修改其方法就可以了。 对其他的类和方法没有任何影响。但是在第一种错误实现时,就会有影响,因为他影响了原有类的结构,万一调用错误,在报完急救之后吴调用灭火方法,那就太尴尬了。

总结

其实在我们正常的WEB项目开发中,基本的单一职责就是 分controller,service,dao层,这就是一种体现,当然有时候我们在接到需求的时候,由于要修改太多东西,可能不会去考虑这一原则的具体实施。

相关文章

  • 面向对象设计

    概述 7 种常用的面向对象设计原则 1、单一职责原则 单一职责原则(Single Responsibility P...

  • 01-设计模式原则

    面向对象的设计原则 面向对象的设计原则也被称为SOLID。SOLID原则包括单一职责原则、开闭原则、里氏替换原则、...

  • Swift设计模式----目录

    面向对象设计原则: 开闭原则 单一职责原则 依赖倒置原则 接口分离原则 迪米特法则 里氏替换原则 面向对象设计模式...

  • 面向对象设计原则之单一职责原则

    单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下: 单一职责原则(Single...

  • 面向对象的设计原则

    [TOC] 一、设计原则概述 1.1 面向对象设计原则概述: 单一职责原则(Single Responsibili...

  • 【设计模式】单一职责原则

    以下内容来自《Java设计模式》 1 单一职责原则 单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小...

  • JAVA设计模式

    面向对象设计的六大设计原则 1、单一职责原则(Single Responsibility Principle, S...

  • 设计模式

    设计原则: 面向对象需要遵循的六大原则: 单一职责原则(SingleResponsibilityPrinciple...

  • 设计模式-Java-设计模式六大设计原则

    单一职责原则——面向对象设计原则 (biancheng.net)[http://c.biancheng.net/v...

  • 面试题

    1>面向对象设计原则 单一职责原则,开闭原则,依赖倒置原则(面向接口编程),迪米特原则,里氏替换原则,接口隔离原则...

网友评论

      本文标题:面向对象设计--单一职责原则

      本文链接:https://www.haomeiwen.com/subject/eflkuqtx.html