• 单一职责原则


    官方定义

    单一职责原则(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
  • 相关阅读:
    Vue 开发常见问题集锦
    java lambda 所有列求和
    如何解决Bat脚本中包含中文,运行乱码
    Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608
    mysql的时区错误问题,The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one
    Error:Execution failed for task ':app:compileDebugJavaWithJavac'
    com.android.ddmlib.adbcommandrejectedexception:未经授权的设备。
    jar包编译成 dex
    apk 查看sha1签名
    Mybatis invalid comparison: java.util.Date and java.lang.String
  • 原文地址:https://www.cnblogs.com/stu-jyj3621/p/14667637.html
Copyright © 2020-2023  润新知