美文网首页C++设计模式程序员
【C++设计模式】工厂方法模式

【C++设计模式】工厂方法模式

作者: 小鱼号的代码日记 | 来源:发表于2021-01-31 21:13 被阅读0次
/*设计模式
 * 工厂方法模式
 * 解决了简单工厂不符合开闭原则的缺点
 * 缺点:
 *  1 类的个数越来越多,增加维护成本
 * 使用场景:
 *    客户端不知道它所需要的对象的类
 *    抽象工厂通过其子类来创建哪个对象
 */

#include<iostream>
using namespace std;
#include "simplefactory.cpp"
//抽象水果工厂
class AbstractFruitFactory
{
    public:
        virtual AbstractFruit* CreateFruit() = 0;
};

//具体的苹果工厂
class AppleFruitFactory :public AbstractFruitFactory
{
    public:
        virtual AbstractFruit* CreateFruit()
        {
           return new Apple();
        }
};

//具体的香蕉工厂
class BananaFruitFactory :public AbstractFruitFactory
{
    public:
        virtual AbstractFruit* CreateFruit()
        {
           return new Banana();
        }
};

void testFactoryFunction()
{
    cout << "factory function test" << endl;
    AbstractFruitFactory* absFactory = nullptr;
    absFactory = new AppleFruitFactory();
    AbstractFruit* fruit = absFactory->CreateFruit();
    fruit->ShowName();
    delete absFactory;

    absFactory = new BananaFruitFactory();
    fruit = absFactory->CreateFruit();
    fruit->ShowName();
    delete fruit;
}

相关文章

  • C++ 常见设计模式

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

  • C++设计模式-第二篇 (Boolan)

    C++设计模式-第二篇 (Boolan) 本章内容:1 工厂方法模式2 抽象工厂模式3 原型模式4 构建器模式5 ...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 设计模式之工厂方法模式(创建型)

    一、模式定义 工厂方法模式:又称工厂模式,也叫虚拟构造器模式,属于构建型设计模式,工厂方法模式是在简单工厂模式上进...

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 设计模式系列-简单工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 定义 简单工厂模式又叫做静态工厂方法模式...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

网友评论

    本文标题:【C++设计模式】工厂方法模式

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