天天看点

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

文章目录

  • ​​解释​​
  • ​​代码演示​​
  • ​​demo1​​
  • ​​demo2​​
  • ​​demo3​​
  • ​​总结​​

解释

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

代码演示

demo1

public class SingleResponsibility {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("摩托车");
        vehicle.run("汽车");
        vehicle.run("飞机");

    }

}
/**
 * 方式1
 * 这些写的问题:
 *   在方式1中,违反了单一原则
 *   解决方式:
 *         根据交通工具运行方法不同,分解成不同的类即可。
 */
class Vehicle {
    public void run(String vehicle){
        System.out.println(vehicle + " 在公路上运行...");
    }
}      

demo2

public class SingleResponsibility2 {
    public static void main(String[] args) {
        RoadVehicle roadVehicle = new RoadVehicle();
        roadVehicle.run("摩托车");
        AirVehicle airVehicle = new AirVehicle();
        airVehicle.run("飞机");
        WaterVehicle waterVehicle = new WaterVehicle();
        waterVehicle.run("船");
    }
}

/**
 * 方案2:的分析
 *  //1.遵守单一职责原则
 *  //2.但是这样的改动很大,即将类分解,同时修改客户端
 *  //3.直接修改vehicle类,改动的代码比较少 = > 方案三
 */
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 + "在水上运行");
    }
}      

demo3

public class SingleResponsibility3 {
    public static void main(String[] args) {
        Vehicle2 vehicle2 = new Vehicle2();
        vehicle2.run("汽车");
        vehicle2.runAir("飞机");
        vehicle2.runWater("轮船");
    }
}

/**
 * 方案三:
 *   1.这种修改方法没有对原来的类做大的修改,只是增加方法
 *   2. 这里虽然没有在类上没有遵守单一职责原则,但是在方法上,仍然遵守单一职责原则
 */
class Vehicle2 {
    public void run(String vehicle){
        System.out.println(vehicle + " 在公路上运行...");
    }
    public void runAir(String vehicle){
        System.out.println(vehicle + " 在天空运行...");
    }
    public void runWater(String vehicle){
        System.out.println(vehicle + " 在水中运行...");
    }
}      

总结

继续阅读