美文网首页
简单工厂模式 C++实现

简单工厂模式 C++实现

作者: 假程序员 | 来源:发表于2019-03-10 22:51 被阅读0次
//
//  main.cpp
//  simple_factory_pattern
//
//  Created by apple on 2019/3/10.
//  Copyright © 2019年 apple. All rights reserved.
//

#include <iostream>

class IProduct
{
public:
    virtual void create() = 0;
};

class Error:public IProduct
{
public:
    void create()
    {
        std::cout<<"Error"<<std::endl;
    }
};
class Box:public IProduct
{
public:
    void create()
    {
        std::cout<<"Box"<<std::endl;
    }
};
class Phone:public IProduct
{
public:
    void create()
    {
        std::cout<<"Phone"<<std::endl;
    }
};
class Pen:public IProduct
{
public:
    void create()
    {
        std::cout<<"Pen"<<std::endl;
    }
};
class Factory
{
public:
    Factory(){}
    IProduct *GetProduct(std::string productName);
};

IProduct *Factory::GetProduct(std::string productName)
{
    if (productName == "Box") {
        Box *box = new Box();
        return box;
    }
    if (productName == "Phone") {
        Phone *phone = new Phone();
        return phone;
    }
    if (productName == "Pen") {
        Pen *pen = new Pen();
        return pen;
    }
    Error *error = new Error();
    return error;
}


int main(int argc, const char * argv[]) {
    Factory factory;
    IProduct *product;
    product = factory.GetProduct("Box");
    product->create();
    delete product;
    product = NULL;
    product = factory.GetProduct("Phone");
    product->create();
    delete product;
    product = NULL;
    product = factory.GetProduct("error");
    product->create();
    delete product;
    product = NULL;
    return 0;
}
Box
Phone
Error
Program ended with exit code: 0
    简单工厂模式,什么是简单工厂模式?简单工厂模式是一个简单工厂为核心,在这个工厂可以产出多种类型产品的设计模式。
    在简单工厂模式中,一般需要有一个工厂类(class Factory),多个产品类(class Product1, class Product2,······),只要向工厂告知所需要的产品,工厂就会返回对应的产品。
    那么如何实现简单工厂模式呢?我们可以定义一个Factory类,Factory提供有多个实例方法,或可通过向一个实例方法传递参数来选择所要生产的产品。这两种实现形式单一一种或两种同时使用都是可以的。区别在与,第一种实现形式多用于所要生产的产品是完全无关的时候可能会使用,这样就会导致耦合较多,不利于变更;第二种实现形式,多用于同一类型的各个产品之间区别不大的时候使用,这样可以使用一个公共接口,这些产品都实现公共接口,并利用接口指针使这个方法可用于这个类型的各个产品(为什么要用指针类型,因为C++不允许实例化含有纯虚函数的抽象类(所以大家才称这个为interface),故只能使用指针来利用多态)。本文中使用的是第二种方法,即向实例方法传参来选择产品,并返回一个接口指针的形式返回。
    根据上一段简单工厂模式实现的介绍,简单工厂模式在需要扩展产品时时必须要修改工厂类的。当然简单工厂模式在产品确定,且以后变更的可能性极低时是很值得使用的,该设计模式简单易懂,结构清晰,主要逻辑都在工厂类中,易于统一维护。

相关文章

  • 创建相关的设计模式

    简单工厂模式 工厂模式 工厂生产行为交由子类去实现 抽象工厂模式 三种工厂模式的缺点:1.简单工厂:工厂类需要实现...

  • C++ 常见设计模式

    C++ 常见设计模式包括: 工厂模式 简单工厂模式定义工厂创建类,抽象产品,派生产品类 工厂方法模式 抽象工厂模式...

  • 设计模式2-工厂模式

    工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式 简单工厂模式 简单工厂模式,就是建立一个工厂类,对实现了同一...

  • 简单工厂模式 C++实现

  • 简单工厂模式(Simple Factory模式)

    什么是简单工厂模式 简单工厂模式的作用 具体实现

  • 设计模式对比

    1.简单工厂、工厂模式和抽象工厂 简单工厂:将实现封装在Factory中;工厂模式:将不同的实现封装在不同的Fac...

  • 详解Java设计模式之《简单工厂模式》

    简单工厂模式是工厂模式中家族最简单实用的模式,可以理解为不同工厂模式的一个特殊的实现。 值得注意的是:简单工厂模式...

  • 工厂模式

    包含简单工厂模式、工厂模式和抽象工厂模式。 比较常见的实例化对象模式。 此处我是用例子实现几个模式方便理解。 简单...

  • 工厂设计模式

    工厂模式 实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式 工厂模式好处 工厂模式是我们最常...

  • 工厂模式

    什么是工厂模式? 实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式 工厂模式好处 工厂模式是...

网友评论

      本文标题:简单工厂模式 C++实现

      本文链接:https://www.haomeiwen.com/subject/dyippqtx.html