简单工厂模式

Posted strangemonkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单工厂模式相关的知识,希望对你有一定的参考价值。

用户提供一个标签,工厂通过一个函数来判断。比如用户提供一个苹果,水果工厂就得根据水果生成器(函数)来创建一个苹果。这些水果的类在外面是已经写好了的。

这个水果生成器直接返回一个水果种类的指针。例子如下。

#define  _CRT_SECURE_NO_WARNINGS 
#include <iostream>

using namespace std;

//抽象的水果类
class Fruit
{
public:
    virtual void getName() = 0;
};

class Apple :public Fruit
{
public:
    virtual void getName() {
        cout << "我是苹果" << endl;
    }
 };

class Banana :public Fruit
{
public:
    virtual void getName() {
        cout << "我是香蕉" << endl;
    }
};

//添加一个新产品 鸭梨
class Pear :public Fruit
{
public:
    virtual void getName() {
        cout << "我是鸭梨" << endl;
    }
};

//工厂
class Factory {
public:
    //水果生产器
    Fruit * createFruit(string kind) {
        Fruit *fruit = NULL;

        if (kind == "apple") {
            fruit =  new Apple;
        }
        else if(kind == "banana"){
            fruit =  new Banana;
        }
        //添加一个鸭梨   修改了工厂的方法, 违背了开闭原则
        else if (kind == "pear") {
            fruit = new Pear;
        }
        return fruit;
    }
};

int main(void)
{
    //人们是跟工厂打交道
    Factory *factory = new Factory; //创建一个工厂
    //给我来一个苹果
    Fruit *apple = factory->createFruit("apple");

    apple->getName();


    Fruit *banana = factory->createFruit("banana");
    banana->getName();

    Fruit *pear = factory->createFruit("pear");

    delete apple;
    delete banana;
    delete factory;

    
    return 0;
}

 

以上是关于简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

PHP面向对象之选择工厂和更新工厂

设计模式-简单工厂工厂方法模式抽象工厂模式详解

设计模式之简单工厂模式

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)