设计模式-1(单一职责原则)

2020-12-25  本文已影响0人  冰菓_

1.总结

  1. 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
  2. 提高类的可读性,提高系统的可维护性;
  3. 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。
  4. 需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则

2.定义:

定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责
遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险

3.代码说明:

public class Demo1 {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("火车");
        vehicle.run("飞机");


    }
}

//发现问题,飞机不会在路上运输,要改变代码

class Vehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在路上运输");
    }
}

//TODO 一个类一个方法 修改时如果遵循单一职责原则 问题类变多了,开销变大  

class Vehicle1 {
    public void run(String vehicle) {
        System.out.println(vehicle + "在路上运输");
    }

}

class Vehicle2 {
    public void runWater(String vehicle) {
        System.out.println(vehicle + "在水上运输");
    }
}

// TODO 修改代码 但是会发生职责扩散,存在潜在风险

class Vehicle3 {
    public void run(String vehicle) {
        if (vehicle != "飞机") {
            System.out.println(vehicle + "在路上运输");
        } else {
            System.out.println(vehicle + "在天空运输");
        }
    }
}

//TODO 改进:虽然也违背了单一职责原则,但在方法级别上却是符合单一职责原则的,因为它并没有动原来方法的代码

class Vehicle4 {
    public void run(String vehicle) {
        System.out.println(vehicle + "在路上运输");
    }

    public void runWater(String vehicle) {
        System.out.println(vehicle + "在水上运输");
    }

}
上一篇下一篇

猜你喜欢

热点阅读