【C++简单工厂模式】

核心思想:用一个工厂类根据不同的输入条件new出不同的派生类指针,然后由多态调用不同派生类中virtual函数,得到不同的结果
在这里插入图片描述
所有的判断处理在工厂类中完成,通过CreateFactory函数,根据不同的类型,new出派生类指针,返回基类指针。

class CFactory
 2 {
 3 public:
 4     CFactory(void);
 5     ~CFactory(void);
 6 
 7 public:
 8     static IOperator* CreateFactory(char cStr);
 9 };
10 
11 IOperator* CFactory::CreateFactory(char cStr)
12 {
13     IOperator *pStr = NULL;
14     switch(cStr)
15     {
16     case '+':
17         {
18             pStr = new CAddOperator();
19         }
20         break;
21     case '-':
22         {
23             pStr = new CSubtract();
24         }
25         break;
26     default:
27         break;
28     }
29 
30     return pStr;
31 }
32 
33 class IOperator
34 {
35 public:
36     IOperator(void);
37     virtual ~IOperator(void);
38 
39 public:
40     virtual int Result() = 0;
41 
42 public:
43     int m_nA;
44     int m_nB;
45 };
46 
47 class CAddOperator : public IOperator
48 {
49 public:
50     CAddOperator(void);
51     ~CAddOperator(void);
52 
53 public:
54     virtual int Result();
55 };
56 
57 class CSubtract : public IOperator
58 {
59 public:
60     CSubtract(void);
61     ~CSubtract(void);
62 
63 public:
64     virtual int Result();
65 };
66 
外部调用:
67     IOperator *pTemp = CFactory::CreateFactory('+');
68     if (NULL != pTemp)
69     {
70         pTemp->m_nA = 4;
71         pTemp->m_nB = 3;
72 
73         int i = pTemp->Result();
74     }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值