zoukankan      html  css  js  c++  java
  • 设计模式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()即可。

  • 相关阅读:
    mongodb 3.4复制搭建
    mongodb 用户管理
    mongodb 3.4 TAR包启动多个实例
    mongodb 3.4 YUM安装
    mongodb数据库备份恢复-windows系统
    mongodb数据库索引管理
    mongodb数据库集合操作
    Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]
    Unity3D性能优化之Draw Call Batching
    Unity3D占用内存太大怎么解决呢?
  • 原文地址:https://www.cnblogs.com/MiniHouse/p/3974451.html
Copyright © 2011-2022 走看看