当前位置: 代码迷 >> 综合 >> 图解Java设计模式-单一职责原则
  详细解决方案

图解Java设计模式-单一职责原则

热度:28   发布时间:2024-02-24 22:00:28.0
package singleresponsbility;public class SingleResponsibility1 {public static void main(String[] args) {Vehicle vehicle = new Vehicle();vehicle.run("摩托车");vehicle.run("汽车");vehicle.run("飞机");}
}class Vehicle{public void run(String vehicle){System.out.println(vehicle + "在公路上跑......");}
}

方式1

1.run方法中,违反了单一职责原则

2.改进: 根据交通工具运行方法不同,分解成不同类即可

package singleresponsbility;public class SingleResponsibility2 {public static void main(String[] args) {RoadVehicle roadVehicle = new RoadVehicle();roadVehicle.run("摩托车");roadVehicle.run("汽车");AirVehicle airVehicle = new AirVehicle();airVehicle.run("飞机");}
}class RoadVehicle{public void run(String vehicle){System.out.println(vehicle + "在公路上运行......");}
}class AirVehicle{public void run(String vehicle){System.out.println(vehicle + "在天空运行......");}
}class WaterVehicle{public void run(String vehicle){System.out.println(vehicle + "在水中运行......");}
}

 

方式2

1. 遵守了单一职责原则

2.但是这样做的改动很大,即将类分解,同时修改客户端

3.改进:直接修改Vehicle类,改动的代码会比较少

package singleresponsbility;public class SingleResponsibility3 {public static void main(String[] args) {Vehicle2 vehicle2 = new Vehicle2();vehicle2.runAir("飞机");vehicle2.runRoad("汽车");vehicle2.runWater("轮船");}
}class Vehicle2{public void runRoad(String vehicle){System.out.println(vehicle + "在公路上运行......");}public void runAir(String vehicle){System.out.println(vehicle + "在天空中运行......");}public void runWater(String vehicle){System.out.println(vehicle + "在水中运行......");}
}

方式3

1.这种修改方法没有对原来的类做大的修改,只是增加方法

2.这里虽然没有在类这个级别上遵守单一 职责原则,但是在方法级别上,仍然是遵守单一职责原则

 

单一职责原则注意事项和细节

  • 降低类的复杂度,一个类只负责一项职责
  • 提高类的可读性,可维护性
  • 降低变更引起的风险
  • 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类方法数量足够少,可以在方法级别保持单一职责原则