栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++简单工厂模式(2)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++简单工厂模式(2)

简单工厂实现代码:

#include 
#include 
using namespace std;
//产品抽象父类
class Operation {
   public:
    double m_leftVlaue;
    double m_rightValue;
    virtual double GetResult() = 0;
};
//具体产品实现类
class AddOperation : public Operation {
    double GetResult() { return m_leftVlaue + m_rightValue; }
};
class SubOperation : public Operation {
    double GetResult() { return m_leftVlaue - m_rightValue; }
};

class MulOperation : public Operation {
    double GetResult() { return m_leftVlaue * m_rightValue; }
};

class DivOperation : public Operation {
    double GetResult() { return m_leftVlaue / m_rightValue; }
};
//工厂类
class OperatorFactory {
   public:
    static Operation* createOperation(char c) {
        switch (c) {
            case '+':
                return new AddOperation;
                break;
            case '-':
                return new SubOperation;
                break;
            case '*':
                return new MulOperation;
                break;
            case '/':
                return new DivOperation;
                break;
        }
    }
};
int main() {
    Operation* operation = OperatorFactory::createOperation('+');
    operation->m_leftVlaue = 1;
    operation->m_rightValue = 2;
    cout << operation->GetResult() << endl;
    return 0;
}

工厂模式实现代码:

#include 
using namespace std;
class AbstractProduct {
   public:
    virtual void makeProduct() = 0;
};

class AbstractFactory {
   public:
    virtual AbstractProduct* createProduct() = 0;
};

class PlaneProduct : public AbstractProduct {
   public:
    void makeProduct() { cout << "造飞机....." << endl; }
};
class PlaneFactory : public AbstractFactory {
   public:
    AbstractProduct* createProduct() {
        AbstractProduct* product = new PlaneProduct;
        return product;
    }
};
class RocketProduct : public AbstractProduct {
   public:
    void makeProduct() { cout << "造火箭...." << endl; }
};
class RocketFactory : public AbstractFactory {
   public:
    AbstractProduct* createProduct() {
        AbstractProduct* product = new RocketProduct;
        return product;
    }
};

int main() {
    //造飞机
    AbstractFactory* factory = new PlaneFactory;
    AbstractProduct* product = factory->createProduct();
    product->makeProduct();
    //造火箭
    factory = new RocketFactory;
    product = factory->createProduct();
    product->makeProduct();

    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997189.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号