对于一个类而言,即一个类应该负责一项职责。如果A类负责不同的职责,比如职责1,职责2。
当职责1变更需要改变类A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。
单一职责方案1:
这种方法虽然遵守单一职责原则,但是类分解过多
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+"在水中跑");
}
}
public class SingleResponsibility {
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("轿车");
WaterVehicle waterVehicle = new WaterVehicle();
waterVehicle.run("轮船");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飞机");
}
}
单一职责模式方案2:这种方案的修改是在类中增加方法,仍然遵守单一职责
class Vehicle2{
public void runRoad(String vehicle){
System.out.println(vehicle+"在公路上跑");
}
public void runAir(String vehicle){
System.out.println(vehicle+"在天空中跑");
}
public void runWater(String vehicle){
System.out.println(vehicle+"在水中跑");
}
}
public class SingleResponsibility2 {
public static void main(String[] args) {
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.runAir("轮船");
vehicle2.runRoad("轿车");
vehicle2.runAir("飞机");
}
}