public class SingleResponsibility01 {
public static void main(String[] args) {
Vehicle vehicle =new Vehicle();
vehicle.run("摩托車");
vehicle.run("汽車");
vehicle.run("飛機");
}
}
//交通工具類
//方式1
//1.在方式1 的run方法中,違反了單一職責原則
//2.解決的方案很是的簡單根據交通工具運行方式的不通,分解成不通類便可
class Vehicle{
public void run(String vehicle) {
System.out.println(vehicle + "在公路上運行。。。。");
}
}
複製代碼
public class SingleResponsibility2 {
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("摩托車");
roadVehicle.run("汽車");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飛機");
}
}
//方案2的分析
//1. 遵照單一職責原則
//2. 可是這樣作的改動很大,即將類分解,同時修改客戶端
class RoadVehicle{
public void run(String vehicle) {
System.out.println(vehicle + "在地上運行....");
}
}
class AirVehicle{
public void run(String vehicle) {
System.out.println(vehicle + "在天上運行");
}
}
複製代碼
public class SingleRespnsibility3 {
public static void main(String[] args) {
Vihicle vihicle = new Vihicle();
vihicle.run("汽車");
vihicle.runAir("飛機");
vihicle.runWater("輪船");
}
}
//方式3的分析
//1. 這種修改方法沒有對原來的類很大的修改,只是增長方法
//2. 這裏雖然沒有在類這個級別上遵照單一職責原則,可是在方法級別上,仍然是遵照單一職責
class Vihicle{
void run(String vehicle) {
System.out.println(vehicle + "在公路上運行。。。");
}
void runAir(String vehicle) {
System.out.println(vehicle + "在天空上運行。。。");
}
void runWater(String vehicle) {
System.out.println(vehicle + "在水裏運行。。。");
}
}
複製代碼
https://juejin.im/post/5d8726aee51d4561ae4da6e9java