1.总结
- 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
- 提高类的可读性,提高系统的可维护性;
- 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。
- 需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则
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 + "在水上运输");
}
}
网友评论