单一职责:
设计一个类实现:
摩托车在公路上跑
汽车在公路上跑
飞机在公路上跑
方法一:
分析: 1.在方式1的run方法中,违反 了单一职责原则
2.解决方案:根据交通工具运行 方法不同,分解成不同类
package org.yunan.design;
public class singleResponsibility {
public static void main(String[] args) {
// TODO Auto-generated method stub
Vehicle vehicle = new Vehicle();
vehicle.run("摩托车");
vehicle.run("汽车");
vehicle.run("飞机");
}
}
class Vehicle {
public void run(String vehicle) {
System.out.println(vehicle + " 在公路上跑 ");
}
}
方式2:根据交通工具运行方法不同,分解成不同类
package org.yunan.design;
public class singleResponsibility2 {
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("摩托车");
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 + " 在水里游 "); }
}
方案2的分析 1.遵守单一职责原则 2.但是改动很大,即要将类分解,又要修改客户端 3.改进:保留并修改Vehicle类
方案3 保留并修改Vehicle类
package org.yunan.design;
public class singleResponsi