面试题答案
一键面试单一职责原则阐述
单一职责原则(Single Responsibility Principle,SRP)在Java接口设计中意味着一个接口应该只负责一项职责或功能,即接口中的方法应该紧密围绕单一的、明确的功能。这样做的好处是提高接口的内聚性,降低接口的复杂度,使得接口更容易理解、维护和扩展。如果一个接口承担了过多职责,当其中某一项职责发生变化时,可能会影响到其他职责相关的代码,违背了软件设计中的开闭原则(对扩展开放,对修改关闭)。
实际接口设计遵循该原则示例
假设我们正在开发一个图形绘制系统,其中涉及到图形的绘制和图形的打印功能。
不遵循单一职责原则的设计:
interface GraphicOperation {
void draw();
void print();
}
这种设计将绘制和打印功能放在同一个接口中,如果后续绘制功能的实现方式发生变化,可能会意外影响到打印功能相关的代码,而且对于只关心绘制或者只关心打印的模块来说,这个接口的职责不清晰。
遵循单一职责原则的设计:
interface GraphicDraw {
void draw();
}
interface GraphicPrint {
void print();
}
这样,GraphicDraw
接口专注于图形绘制职责,GraphicPrint
接口专注于图形打印职责。不同的图形类可以根据自身需求实现相应的接口,比如:
class Rectangle implements GraphicDraw {
@Override
public void draw() {
System.out.println("绘制矩形");
}
}
class Triangle implements GraphicDraw, GraphicPrint {
@Override
public void draw() {
System.out.println("绘制三角形");
}
@Override
public void print() {
System.out.println("打印三角形");
}
}
通过这种方式,当绘制功能或者打印功能需要修改时,只需要在对应的接口及其实现类中进行修改,不会对其他无关功能造成影响,代码的维护和扩展变得更加容易。