当前位置:首页>java>【C++编程哲学妙喻】- 依赖倒置:老板不依赖任何具体员工

【C++编程哲学妙喻】- 依赖倒置:老板不依赖任何具体员工

  • 2026-10-21 13:27:29
【C++编程哲学妙喻】- 依赖倒置:老板不依赖任何具体员工
糟糕的架构是老板直接命令员工'小王,发文件!'小王一走,系统瘫痪。好的架构是老板定义职位要求:'我需要一个文件发送员'...

依赖倒置的本质是让高层模块依赖抽象而非具体实现。就像老板只关心"岗位职能"而非"具体员工",代码中Boss类只需对接口FileSender有依赖,无需知道是小王、小李还是AI助手在执行任务,大幅提升系统灵活性。

【代码演示】

#include <iostream>#include <memory>// 📄 接口:职位要求class FileSender {public:    virtual void sendFile(const std::string& file) = 0;    virtual ~FileSender() = default;};// 👨‍💼 老板:只依赖接口,不依赖具体员工class Boss {    std::unique_ptr<FileSender> employee;public:    Boss(std::unique_ptr<FileSender> emp) : employee(std::move(emp)) {}    void requestFileSend(const std::string& file) {        std::cout << "老板:请发送文件 " << file << "\n";        employee->sendFile(file);  // 只知道职位要求    }};// 👨‍💻 具体员工1:小王class XiaoWang : public FileSender {public:    void sendFile(const std::string& file) override {        std::cout << "小王:通过邮件发送 " << file << "\n";    }};// 👩‍💻 具体员工2:小李  class XiaoLi : public FileSender {public:    void sendFile(const std::string& file) override {        std::cout << "小李:通过微信发送 " << file << "\n";    }};// 🤖 新员工:AI助手class AIAssistant : public FileSender {public:    void sendFile(const std::string& file) override {        std::cout << "AI:通过云服务发送 " << file << "\n";    }};int main() {    std::cout << "=== 依赖倒置:老板不依赖具体员工 ===\n";    // 老板可以轻松切换不同员工    Boss boss1(std::make_unique<XiaoWang>());    boss1.requestFileSend("报告.doc");    Boss boss2(std::make_unique<XiaoLi>());      boss2.requestFileSend("报表.xls");    Boss boss3(std::make_unique<AIAssistant>());    boss3.requestFileSend("数据.pdf");    std::cout << "小王离职?没关系!老板继续工作!\n";}
AI大师Karpathy最新访谈:AGI还需十年
不惑之年,我重拾经典
“万事俱备”的陷阱,会毁掉你的可能性
年龄只是个数字?别再自欺欺人了
从代码小白到架构与管理的蜕变
研发转管理会失去能力护城河?
迈向架构师与技术领袖【程序员的蜕变之路】
工欲善其事,必先利其器
一个普通IT人的20年奋斗:从小白到编程教育布道者
AI什么都会了,我们还要学习吗?
Andrej Karpathy最新演讲:AI时代的软件
小朋友学编程早,真能“赢在起跑线”?
普通人如何应对AI带来的变革
抱歉,只能为30人开放!AI+真人护航学编程
AI时代为何还要学习编程?
为简化编程入门,我费尽思量

最新文章

随机文章