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
  • 相关阅读:
    日常
    hdoj 5690 All X (快速幂+取模)
    hdoj 4004 The Frog's Games(二分)
    Mac androidStudio cannot resolve corresponding JNI function
    Mac 切换JDK版本
    MAC系统 如何显示隐藏的文件(文件夹)
    C 读写文件以及简单的文件加密
    C 双向链表的简单排序实现
    Android ViewDragHelper详解
    android Toast的内容过长,如何居中显示?
  • 原文地址:https://www.cnblogs.com/stu-jyj3621/p/14667637.html
Copyright © 2011-2022 走看看