单一职责原则
单一职责原则就是,一个类只有一个职责。
单一职责的作用
如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心就是解耦和增强内聚性。
未改进前代码
public class DanYiZhiZe {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("汽车");
vehicle.run("摩托车");
vehicle.run("跑车");
vehicle.run("飞机");//问题造成了飞机也在公路上运行。
}
class Vehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在公路上运行----------");
}
}
改进代码一
类的单一职责
public class DanYiZhiZe {
public static void main(String[] args) {
RoadVehicle r=new RoadVehicle();
AirVehicle a=new AirVehicle();
WaterVehicle w=new WaterVehicle();
r.run("汽车");
a.run("飞机");
w.run("轮船");
}
}
//将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+"在水上运行");
}
}
改进代码二
方法的单一职责
public class DanYiZhiZe {
public static void main(String[] args) {
Vehicle1 v=new Vehicle1();
v.airRun("飞机");
v.waterRun("轮船");
v.roadRun("汽车");
}
}
//直接修改Vehicle类
class Vehicle1 {
public void roadRun(String vehicle) {
System.out.println(vehicle + "在公路上运行----------");
}
public void airRun(String vehicle) {
System.out.println(vehicle + "在天上运行----------");
}
public void waterRun(String vehicle) {
System.out.println(vehicle + "在水上运行----------");
}