简单工厂模式,把创建类(class)的任务交给工厂

本章你内容

 

1. 简单工厂模式简介

2. 简单工厂模式UML图像

3. 简单工厂模式案例源码

4. 简单工厂模式优缺点分析

5. 思考

 

1. 简单工厂模式简介

1.1 基本概念

工厂:  具体类的生产中心,用于构建具体类;

具体类:实现确定或者不确定任务的类对象;

抽象类:具体类的抽象存在,所有实例所共有的公共接口。

 

2. 简单工厂模式UML图像

抽象类:水果

具体类:苹果,香蕉,鸭梨

工厂:水果工厂

 

 

简单工厂模式,把创建类(class)的任务交给工厂

 

3. 简单工厂模式案例源码


#include <iostream>

class  Fruit {
public:
    virtual void getName() = 0; // 纯虚函数
};

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

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

class Pear : public Fruit {
public:
    virtual void getName() {
        std::cout << "我是鸭梨..." << std::endl;
    }
};

class fruitFactory {
public:
    Fruit * createFruit(std::string name) {
        if (name == "apple") {
            return new Apple;
        }
        else if (name == "banana") {
            return new Banana;
        }
        else if (name == "pear") {
            return new Pear;
        }
    }
};

int main()
{
    fruitFactory* factory=NULL;
    Fruit* fruit = NULL;
    fruit = factory->createFruit("apple");
    fruit->getName();
    delete fruit;
    fruit = NULL;

    fruit = factory->createFruit("banana");
    fruit->getName();
    delete fruit;
    fruit = NULL;

    fruit = factory->createFruit("pear");
    fruit->getName();
    delete fruit;
    fruit = NULL;

    return 0;
}

 

4. 简单工厂模式优缺点分析

优点:

1.根据用户需求订购产品,实现了定制化消除系统资源,减轻负荷,提升性能

2. 类别新增无需修改源码。满足开闭原则

缺点:

1. 工厂的噩梦,新增加的业务使得工厂更加臃肿。

 

5. 思考

1. 建立模式,用工厂实现规模化代码生产。