单一职责原则

前言: 这些都是老师布置的作业得写,顺便记录下

单一职责原则官方解释: 对类来说的,即一个类应该只负责一项职责

理解: 如果类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 B 和 C,这样 B 就专门解决职责 1, C 就专门解决职责 2

如下面这个例子就没有体现单一职责原则,可以发现Vehicle这个类既去 让 "汽车" 在路上运行,同时也让 "飞机" 在路上运行,明显就错误了!

public class demo1 {
	public static void main(String[] args) {
		Vehicle v = new Vehicle();

		v.run("汽车");
		v.run("飞机");
		
	}	
}

class Vehicle{
	public void run(String vehicle) {
		System.out.println(vehicle + "正在路上运行!");
	}
	
}

再看下面这个例子,我们用两个类去定义各自去实现 "飞机" "汽车"的 run 方法,这样子就不会出现类似的错误了!

public class demo2 {
	public static void main(String[] args) {
		RoadVehicle v1 = new RoadVehicle();
		AirVehicle  v2 = new AirVehicle();
		
		v1.run("汽车");
		v2.run("飞机");
		
	}	
}

class RoadVehicle{
	public void run(String vehicle) {
		System.out.println(vehicle + "正在路上运行!");
	}
	
}

class AirVehicle{
	public void run(String vehicle) {
		System.out.println(vehicle + "正在天上运行!");
	}
	
}

总结: 单一职责的原则注意事项和细节

  1. 降低类的复杂度,一个类只负责一项职责。

  2. 提高类的可读性,可维护性

  3. 降低变更引起的风险

个人理解:其实还是高内聚 低耦合 !

但是再思考下,如果工作量少的话,这样子去实现会特别的臃肿,大材小用了,那么当工作量少的话还可以如下去实现,把 类 降一级成为 方法

这里虽然没有在类的级别上遵守单一职责原则,但是在方法的级别上,仍然是遵守单一职责

public class demo3 {
	public static void main(String[] args) {
		Vehicle v = new Vehicle();

		v.runRoad("汽车");
		v.runWater("飞机");
		
	}	
}

class Vehicle{
	public void runRoad(String vehicle) {
		System.out.println(vehicle + "正在路上运行!");
	}
	
	public void runWater(String vehicle) {
		System.out.println(vehicle + "正在天上运行!");
	}
}

总结:通常情况下,我们应当遵守单一职责原则,只有当逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则

原文地址:https://www.cnblogs.com/zpchcbd/p/12517540.html