单一职责原则
Posted chao-zjj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单一职责原则相关的知识,希望对你有一定的参考价值。
单一职责原则
1.基本介绍
一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2
2.应用实例
以交通工具案例说明
1) 方案1
public class SingleResponsibility1
public static void main(String[] args)
Vehicle vehicle = new Vehicle();
vehilcle.run("摩托车");
vehicel.run("汽车");
vehicel.run("飞机");
class Vehicle
public void run(String vehicle)
System.out.println(vehicle+"在公路上行驶...")
缺点:违反了单一职责原则
改进:根据交通工具运行方法不同,分解成不同的类。
2)方案二
public class SingleResponsibility2
public static void main(String[] args)
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("摩托车");
roadVehicle.run("汽车");
AirVehicle airVehicle = new Airvehicle();
airVehicle.run("飞机");
class RoadVehicle
public void run(String vehicle)
System.out.println(vehicle+"公路上运行");
class AirVehicle
public void run(String vehicle)
System.out.println(vehicle+"天空运行");
分析:虽然遵守了单一职责原则。但改动很大
改进:直接修改Vehicle类,让方法实现单一原则。
3)方案三
public class SingleResponsibility3
public static void main(String[] args)
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.run("汽车");
vehicle2.runWater("轮船");
vehicle2.runAir("飞机");
class Vehicle2
public void run(String vehicle)
System.out.println(vehicle+"在公路上运行");
public void runAir(String vehicle)
System.out.println(vehicle+"在天空上运行"):
分析:这种修改方法没有对原来的类做大的修改,只是增加方法。
虽然没有在类级别上遵守单一职责原则,但是在方法级别上遵守单一职责。
3.单一职责原则注意事项和细节
1)降低类的复杂度,一个类只负责一项职责。
2)提高类的可读性,可维护性
3)降低变更引起的风险
4)通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则。
以上是关于单一职责原则的主要内容,如果未能解决你的问题,请参考以下文章