总结来自b站尚硅谷视频
1、降低类的复杂度,一个类只负责一项职责
2、提高类的可读性,可维护性
3、降低变更引起的风险
4、通常情况下,我们应该遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则。
//案例一:
public class SingleOne{
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+"在公路上运行");
}
}
//案例二:
public class SingleTwo{
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("摩托车");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飞机");
WaterVehicle waterVehicle = new WaterVehicle();
waterVehicle.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+"在水路上运行");
}
}
//案例三:
public class SingleThree{
public static void main(String[] args) {
VehicleThree vehicleThree = new VehicleThree();
vehicleThree.airRun("飞机");
vehicleThree.roadRun("摩托车");
vehicleThree.waterRun("轮船");
}
}
//遵守单一职责,比案例二简单
//在类中的方法层面维持单一职责
class VehicleThree{
public void roadRun(String vehicle){
System.out.println(vehicle+"在公路上运行");
}
public void airRun(String vehicle){
System.out.println(vehicle+"在天空上运行");
}
public void waterRun(String vehicle){
System.out.println(vehicle+"在水路上运行");
}
}
尽量避免使用if -else if -else这样子会让代码的耦合度增加!