zoukankan      html  css  js  c++  java
  • 单一职责原则

    官方定义

    单一职责原则(Single Responsibility Pronciple,SRP),有且仅有一个原因引起类的变化

    顾名思义:一个类值负责一项职责。如类A负责连个不同的职责:职责1和职责2,当职责1需求变更二改变A时,可能会造成职责2执行错误,所以需要将类A的粒度分解为A1和A2

    package danyisheji;
    
    public class Animal {
        public static void main(String[] args) {
            new ForestAnimal().run("狮子");
            new AirAnimal().fly("老鹰");
        }
    
    
    }
    
    class ForestAnimal {
        public void run(String animal) {
            System.out.println(animal + "在森林中愉快地奔跑");
        }
    }
    
    class AirAnimal {
        public void fly(String animal) {
            System.out.println(animal + "在天空中愉快地飞翔");
        }
    }
    
    

    优势: 符合了业务逻辑,符合翻译职责原理
    劣势:改动幅度大,不光是要拆分类,客户端的代码也要进行大幅度的改动

    解决方法二:

    直接在原有类的基础上进行修改

    package danyisheji;
    
    public class Animal {
        public static void main(String[] args) {
            new animal().runForest("狮子");
            new animal().fly("老鹰");
        }
    
    
    }
    
    class  animal{
        public void runForest(String animal){
            System.out.println(animal + "在森林中愉快地奔跑");
        }
        public void fly(String animal){
            System.out.println(animal + "在天空中愉快地飞翔");
        }
    }
    

    优势:改动幅度小,包括客户端,完成了业务逻辑
    劣势:是否违反了单一职责原则?(方法级别的遵守)

    单一职责原则:各司其职

    注意事项和原则

    • 降低类的复杂度,一个类只负责一项职责(一个类职责少了,相应的复杂度低了)
    • 提高类的可读性以及课维护性(相应的复杂度降低了,代码量就会减少,可读性也就提高了,课维护性自然也就提高了)
    • 降低变更引起的风险(一个类职责越多,变更的可能性就会越大,变化带来的风险也就会越大)
    • 通常情况下,我们应该遵守单一职责原则(只有逻辑足够简单,才可以在代码中违反单一职责原则)

    如何遵守单一执行原则

    其实就是合理的职责分解,从业务出发,从需求出发,识别出同一个类型的职责
    需要说明一点,单一职责原则不是面向对象语言特有的,只要是模块化的程序设计,都要遵守。

    转载请注明出处:https://www.cnblogs.com/stu-jyj3621
  • 相关阅读:
    失衡天平
    简单 hash 入门题目
    美团codem 数列互质
    最小圆覆盖
    求1-n 中与 m 互质的素因子 (容斥原理)
    格式化输出;while循环;运算符
    python的历史 常量 注释 基础数据类型等基本操作 和if 判断语句
    异常的概念
    isinstance与issubclass
    面向对象——内置函数
  • 原文地址:https://www.cnblogs.com/stu-jyj3621/p/14667637.html
Copyright © 2011-2022 走看看