核心思想:用一個工廠類根據不同的輸入條件new出不同的派生類指針,然后由多態調用不同派生類中virtual函數,得到不同的結果
所有的判斷處理在工廠類中完成,通過CreateFactory函數,根據不同的類型,new出派生類指針,返回基類指針。
代碼如下:
1 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 }
?
?