设计模式1——抽象工厂

抽象工厂通过一个工厂产生各种不同的实际对象,并返回基类的指针,通过基类的指针来统一对对象进行操作,增强了其灵活性,降低了耦合,便于后续更新和维护。

 

实例代码:

AbstractFactory.h内容

复制代码
 1 #ifndef AbstractFactory_H_H
 2 #define AbstractFactory_H_H
 3 
 4 #include <iostream>
 5 using namespace std;
 6 
 7 class Oper
 8 {
 9 public:
10     Oper(int a0, int b0) : a(a0), b(b0) {}
11     virtual ~Oper() {}
12     virtual int getResult() = 0;
13 
14 
15 protected:
16     int a, b;
17 };
18 
19 class OperAdd : public Oper
20 {
21 public:
22     OperAdd(int a0, int b0) : Oper(a0, b0) {}
23     virtual int getResult(){
24         return a+b;
25     }
26 };
27 
28 class OperSub : public Oper
29 {
30 public:
31     OperSub(int a0, int b0) : Oper(a0, b0) {}
32     virtual int getResult(){
33         return a-b;
34     }
35 };
36 
37 class AbstractFactory
38 {
39 public:
40     static Oper* create(int a0, int b0, char ch){
41         Oper *oper = NULL;
42         switch(ch){
43         case '+': oper = new OperAdd(a0, b0); break;
44         case '-': oper = new OperSub(a0, b0); break;
45         }
46         return oper;
47     }
48 };
49 
50 
51 void AbstractFactoryTest()
52 {
53     int a = 4, b = 3;
54     //Oper *oper = NULL;
55     cout << AbstractFactory::create(a, b, '+')->getResult() << endl;
56     cout << AbstractFactory::create(a, b, '-')->getResult() << endl;
57 }
58 
59 
60 #endif
复制代码

具体运行在main函数中调用AbstractFactoryTest()即可。

posted @   丛林小阁楼  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示