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

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 class CProduct
     7 {
     8 public:
     9         virtual void Use() = 0;
    10 };
    11 
    12 class CConcreteProductA: public CProduct
    13 {
    14 public:
    15         virtual void Use()
    16         {
    17                 cout<< "ConCreteProductA....."<< endl;
    18         }
    19 };
    20 
    21 class CConcreteProductB: public CProduct
    22 {
    23 public:
    24         virtual void Use()
    25         {
    26                 cout<< "ConCreteProductB....."<< endl;
    27         }
    28 };
    29 
    30 class CFactory
    31 {
    32 public:
    33         virtual CProduct* FactoryMethod() = 0;
    34 };
    35 
    36 class CConcreteFactoryA: public CFactory
    37 {
    38 public:
    39         virtual CProduct* FactoryMethod()
    40         {
    41                 return new CConcreteProductA();
    42         }
    43 };
    44 
    45 class CConcreteFactoryB: public CFactory
    46 {
    47 public:
    48         virtual CProduct* FactoryMethod()
    49         {
    50                 return new CConcreteProductB();
    51         }
    52 };
    53 
    54 int main(void)
    55 {
    56         CFactory* cFactoryA = new CConcreteFactoryA();
    57         CProduct* cProductA = cFactoryA->FactoryMethod();
    58 
    59         cProductA->Use();
    60 
    61         delete cFactoryA;
    62         delete cProductA;
    63 
    64 
    65         CFactory* cFactoryB = new CConcreteFactoryB();
    66         CProduct* cProductB = cFactoryB->FactoryMethod();
    67 
    68         cProductB->Use();
    69 
    70         delete cFactoryB;
    71         delete cProductB;
    72 
    73         return 0;
    74 }
    75 //////////////////////////////
    76 [wenchaozeng@~/learn_code/design_pattern/6_factory_method]$ ./FactoryMethod       
    77 ConCreteProductA.....
    78 ConCreteProductB.....

    参考:http://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/factory_method.html

  • 相关阅读:
    java后端工具积累
    Java基础面试题整理
    MySql常问面试题
    jvm及并发面试题
    中间件redis kafka面试题
    笔记
    解决Git操作报错
    view的state和drawable的state 源码分析
    flutter_6_动态化简介
    有关namespace 命名空间
  • 原文地址:https://www.cnblogs.com/070412-zwc/p/6800172.html
Copyright © 2011-2022 走看看