依赖倒转原则是面向对象设计原则之一,它指的是高层模块不应该依赖于低层模块,两者都应该依赖于抽象。
以下是一个简单的C++例子来演示依赖倒转原则:
cppCopy code
#include <iostream>
#include <vector>
// 抽象基类,定义接口
class Writer {
public:
virtual void write(std::string message) = 0;
};
// 高层模块
class Notifier {
public:
void notify(Writer& writer, std::string message) {
writer.write(message);
}
};
// 低层模块1
class ConsoleWriter : public Writer {
public:
void write(std::string message) override {
std::cout << "Console: " << message << std::endl;
}
};
// 低层模块2
class FileWriter : public Writer {
public:
void write(std::string message) override {
// 写入到文件(假设)
std::cout << "File: " << message << std::endl;
}
};
int main() {
Notifier notifier;
ConsoleWriter consoleWriter;
FileWriter fileWriter;
notifier.notify(consoleWriter, "Hello, World!");
notifier.notify(fileWriter, "Hello, World!");
return 0;
}
在这个例子中,Notifier
是一个高层模块,它不直接依赖于低层的 ConsoleWriter
和 FileWriter
。而是依赖于一个抽象接口 Writer
,这样就实现了依赖倒转。
powered by kaifamiao