抽象工厂模式
1 #ifndef ABSTRACTFACTORY_H 2 #define ABSTRACTFACTORY_H 3 4 #include <iostream> 5 6 class AbstractDisk 7 { 8 public: 9 virtual void play(void) = 0; 10 }; 11 12 class AbstractFactory 13 { 14 public: 15 virtual AbstractDisk* create(void) = 0; 16 }; 17 18 class DiskDVD: public AbstractDisk 19 { 20 public: 21 void play(void) 22 { 23 std::cout << "now play DVD" << std::endl; 24 } 25 }; 26 27 class DiskCD: public AbstractDisk 28 { 29 public: 30 void play(void) 31 { 32 std::cout << "now play CD" << std::endl; 33 } 34 }; 35 36 class DVDFactory: public AbstractFactory 37 { 38 public: 39 AbstractDisk* create(void) 40 { 41 return new DiskDVD; 42 } 43 }; 44 45 class CDFactory: public AbstractFactory 46 { 47 public: 48 AbstractDisk* create(void) 49 { 50 return new DiskCD; 51 } 52 }; 53 54 #endif // ABSTRACTFACTORY_H
客户端代码
1 #include "AbstractFactory.h" 2 3 int main(void) 4 { 5 DVDFactory dvdFactory; 6 CDFactory cdFactory; 7 AbstractDisk *Dvd = dvdFactory.create(); 8 AbstractDisk *Cd = cdFactory.create(); 9 10 Dvd->play(); 11 Cd->play(); 12 13 return 0; 14 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用