c++高内聚,松耦合 实例代码
/* * 练习1、设计一个开关 * * 这个开关可以对用电设备进行开关控制,但它不知道要控制的用电设备具体是什么。 * * 实现思路:先定义一个具有开关功能的抽象类,然后写两个纯虚函数 on(),off()接口。 * 再定义一个具体的开关类,然后定义一个开关抽象类的引用,用来获取具体的设备,控制其打开和关闭 * 然后定义一个开关抽象类的派生类(用来实现具体的拥有开关属性的用电设备) * 最后将派生来传递给具体的开关类,从而达到具体的开关类 和 具体的用电设备 互不关联的原则,开关类只负责开关 * 不需要知道它具体控制的是什么设备。 * * 最终达到松耦合的效果 * * 2023.2.15 */ //定义具有开关特性的抽象类接口 Switchable #include <iostream> class Switchable { public: virtual void on() const = 0; virtual void off() const = 0; }; //定义具体的开关类 Switch class Switch { private: bool state{ false }; private: Switchable& m_switchable; public: Switch() = delete; explicit Switch(Switchable& switchable):m_switchable(switchable){} public: void toggle() { if (state) { state = false; m_switchable.on(); } else { state = true; m_switchable.off(); } } }; //通过抽象开关接口,派生一个灯类 Lamp class Lamp:public Switchable { private: std::string m_name; public: Lamp() = delete; explicit Lamp(std::string name):m_name(name){} public: virtual void on() const override{ std::cout << m_name << ":打开" << std::endl; } virtual void off()const override { std::cout << m_name << ":关闭" << std::endl; } }; int main() { Lamp lamp("台灯"); Switch witch(lamp); witch.toggle(); witch.toggle(); return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程