对类来说,一个类应该只负责一项职责,如果类A负责两个不同职责:职责1、职责2.当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的颗粒度分解为A1,A2

方式1:没遵守单一职责

public class SingleResponsibility {
    public static void main(String[] args) {
        Vehicle vehicle=new Vehicle();
        vehicle.run("摩托车");
        vehicle.run("飞机");
    }
   
}
//交通工具类
//方式1
//1. 在方式1的run方法中违反了单一职责原则 飞机不能在公路上跑
//应根据交通工具运行方法不同,分成不同类
class Vehicle{
    public Vehicle(){
    }
    public void run(String vehicle){
        System.out.println(vehicle+"在公路上跑...");
    }
}

方式2:遵守单一职责 但是改动大

public class SingleResponsibility {
    public static void main(String[] args) {
        AirVehicle airVehicle=new AirVehicle();
        RoadVehicle roadVehicle=new RoadVehicle();
        airVehicle.run("飞机");
        roadVehicle.run("汽车");
    }

}
//方式2
//遵守了单一职责原则
//但是改动很大,需要将类分解,同时改动客户端
//可以直接修改Vehicle类,改动代码比较少--》方式3
class  RoadVehicle{
    public void run(String vehicle){
        System.out.println(vehicle+"在公路跑");
    }
}
class AirVehicle{
    public void run(String vehicle){
        System.out.println(vehicle+"在天上跑");
    }
}

方式3:在类上没遵守单一职责,但是在方法上遵守了

public class SingleResponsibility {
    public static void main(String[] args) {
     Vehicle2 vehicle2=new Vehicle2();
     vehicle2.run("汽车");
     vehicle2.runAir("飞机");
    }
}
//交通工具类
//方式3
//这种修改方法没有对原来的类做大的修改 只是增加了方法
//虽然在类的级别上没有遵守单一职责原则 但是方法的界别上遵守了单一职责原则
class Vehicle2{
    public Vehicle2(){
    }
    public void run(String vehicle){
        System.out.println(vehicle+"在公路上跑...");
    }
    public void runAir(String vehicle){
        System.out.println(vehicle+"在天上跑...");
    }
}

单一职责原则:

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐