文章目录
- demo1
- demo2
- demo3
解释
代码演示
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 + " 在水中运行...");
}
}
总结