zoukankan      html  css  js  c++  java
  • 设计模式——简单工厂模式(C++实现)

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 
     7 class COperator
     8 {
     9 public:
    10         virtual double GetResult()=0;
    11 
    12 public:
    13         COperator()
    14         {
    15         }
    16         COperator(double number_a, double number_b): m_numberA(number_a), m_numberB(number_b)
    17         {
    18         }
    19         double m_numberA;
    20         double m_numberB;
    21 };
    22 
    23 
    24 class CSub: public COperator
    25 {
    26 public:
    27         CSub()
    28         {
    29         }
    30         CSub(double number_a, double number_b): COperator(number_a, number_b)
    31         {
    32         }
    33         virtual double GetResult();
    34 };
    35 
    36 double CSub::GetResult()
    37 {
    38         return this->m_numberA - this->m_numberB;
    39 }
    40 
    41 
    42 class CAdd: public COperator
    43 {
    44 public:
    45         CAdd()
    46         {
    47         }
    48         CAdd(double number_a, double number_b): COperator(number_a, number_b)
    49         {
    50         }
    51         virtual double GetResult();
    52 };
    53 
    54 double CAdd::GetResult()
    55 {
    56         return m_numberA + m_numberB;
    57 }
    58 
    59 
    60 class CFactory
    61 {
    62 public:
    63         static COperator* CreateOperation(char sOpeType);
    64 };
    65 
    66 COperator* CFactory::CreateOperation(char sOpeType)
    67 {
    68         switch(sOpeType)
    69         {
    70                 case '-':
    71                         return new CSub();
    72                         break;
    73                 case '+':
    74                         return new CAdd();
    75                         break;
    76                 default:
    77                         break;
    78         }
    79 }
    80 
    81 
    82 int main(void)
    83 {
    84         COperator* oper = CFactory::CreateOperation('-');
    85         oper->m_numberA = 10;
    86         oper->m_numberB = 20;
    87         cout<< "oper->m_numberA: "<< oper->m_numberA<< endl;
    88         cout<< "oper->m_numberB: "<< oper->m_numberB<< endl;
    89         cout<< oper->GetResult()<< endl;
    90 
    91         return 0;
    92 }
    93 ////////////////////////
    94 [root]$ ./2_simple_factory
    95 oper->m_numberA: 10
    96 oper->m_numberB: 20
    97 -10
  • 相关阅读:
    windows下面安装Python和pip教程
    Python已安装第三方库
    Python安装cx_Oracle第三方库(Mac osx Yosemite Intel i5环境)
    7.Python进阶_函数对象
    6.Python进阶_循环对象
    5.Python进阶_循环设计
    UltraEdit中粘贴问题
    UltraEdit的代码片的编码设置
    使用C#实现SSLSocket加密通讯 Https
    sql while 循环要加begin end
  • 原文地址:https://www.cnblogs.com/070412-zwc/p/6745536.html
Copyright © 2011-2022 走看看