面试题答案
一键面试- 单一职责原则:一个抽象类接口应该只负责一个明确的功能,避免接口臃肿。例如,图形绘制接口
DrawInterface
,只专注于图形绘制相关的操作,如draw()
方法,不应该包含图形移动、缩放等其他无关功能。 - 依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖抽象接口。比如游戏开发中,游戏逻辑模块(高层)不直接依赖具体的图形渲染库(底层),而是依赖图形渲染的抽象接口,这样便于替换不同的渲染库。
- 接口隔离原则:客户端不应该依赖它不需要的接口。比如,一个电商系统中,用户模块只需要登录、注册接口,就不应该被强制依赖商品管理等无关接口。
以单一职责原则为例,实际代码体现如下:
// 图形绘制抽象类
class DrawInterface {
public:
virtual void draw() = 0;
};
// 圆形类,实现图形绘制接口
class Circle : public DrawInterface {
public:
void draw() override {
std::cout << "Draw a circle." << std::endl;
}
};
// 方形类,实现图形绘制接口
class Square : public DrawInterface {
public:
void draw() override {
std::cout << "Draw a square." << std::endl;
}
};
在此代码中,DrawInterface
只专注于图形绘制这一职责,Circle
和Square
类各自实现draw
方法来完成具体图形的绘制,符合单一职责原则。