单一职责原则:
单一职责原则注意事项和细节:
1.降低类的复杂度,一个类只负责一项职责
2.提高类的可读性,可维护性
3.降低变更引起的风险
4.通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类方法数量足够少,可以在方法级别保持单一职责原则。
案例:
1.在方式1的run 方法中,违反了单一职责原则,案例中飞机不能在公路上跑,而是在天空中飞行
package singleresponsibility;
public class SingleResponsibility {
public static void main(String[] args) {
Vehile vehile = new Vehile();
vehile.run("小汽车");
vehile.run("摩托车");
vehile.run("飞机");
}
}
//交通工具类
//方式1:
//1.在方式1的run 方法中,违反了单一职责原则
//2.解决方案非常简单,根据交通工具运行方法不同,分解成不同类即可
class Vehile{
public void run(String vehicle){
System.err.println(vehicle + " 在公路上跑");
}
}
2.改进方案:写了三个独立的类,遵守了单一职责原则,但是这样的改动很大,即将类分解,同时修改了客户端
package singleresponsibility;
public class SingleResponsibility2 {
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("汽车");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飞机");
WaterVehicle waterVehicle = new WaterVehicle();
waterVehicle.run("潜艇");
}
}
//方案2的分析
//1.遵守单一职责原则
//2.但是这样的改动很大,即将类分解,同时修改客户端
//3.改进:直接修改Vehicle类,改动的代码会比较少 ==》 方案3
class RoadVehicle{
public void run(String vehicle){
System.err.println( vehicle + " 在公路上运行!");
}
}
class AirVehicle{
public void run(String vehicle){
System.err.println(vehicle + " 在天上飞行");
}
}
class WaterVehicle{
public void run(String vehicle){
System.err.println(vehicle + " 在水里运行");
}
}
3.再次改进方案:这种改进方案对原始的方案没有大的改动,只是增加了方法,此种方法一定成都上没有遵守单一职责原则,但是在方法级别上遵守了单一职责原则。与单一职责原则中第四条:只有类方法数量足够少,可以在方法级别保持单一职责原则。
package singleresponsibility;
public class SingleResponsibility3 {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("汽车");
vehicle.runAir("飞机");
vehicle.runWater("轮船");
}
}
//方式3的分析:
//1.这种修改方式,没有对原来的类做大的修改只是增加了方法
//2.一定程度上没有完全(类上面)遵守单一职责原则,但是在方法级别上遵守了单一职责原则
class Vehicle{
public void run(String vehicle){
System.err.println(vehicle + " 在公路上运行");
}
public void runAir(String vehicle){
System.err.println(vehicle + " 在天空运行");
}
public void runWater(String vehicle){
System.err.println(vehicle + " 在水中运行");
}
}
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载