zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【C++设计模式】创建型模式 — 工厂方法模式

2023-09-14 09:14:31 时间

目录

1、工厂方法模式介绍

职责与角色

2、实例


1、工厂方法模式介绍

工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。

工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。

核心工厂类不在负责产品的创建,成为一个抽象的工厂。其子工厂类要继承核心工厂类。

职责与角色

抽象工厂(Creator)角色

工厂方法模式的核心,任何工厂类都必须实现这个接口。

具体工厂( Concrete  Creator)角色

具体工厂类是抽象工厂的一个实现,负责实例化产品对象。

抽象(Product)角色    

工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

具体产品(Concrete Product)角色

工厂方法模式所创建的具体实例对象

2、实例

#include <iostream>

using namespace std;

class Fruit {
public:
    virtual void sayname()
    {
        cout << "fruit\n";
    }
};

class FruitFactory {
public:
    virtual Fruit* getFruit()
    {
        return new Fruit();
    }
};

class Banana : public Fruit {
public:
    virtual void sayname()
    {
        cout << "Banana\n";
    }
};

class BananaFactory : public FruitFactory {
public:
    virtual Fruit* getFruit()
    {
        return new Banana;
    }
};

class Apple : public Fruit {
public:
    virtual void sayname()
    {
        cout << "Apple\n";
    }
};

class AppleFactory : public FruitFactory {
public:
    virtual Fruit* getFruit()
    {
        return new Apple;
    }
};

int main() {
    FruitFactory *f = NULL;
    Fruit *fruit = NULL;

    f = new BananaFactory();
    fruit = f->getFruit();
    fruit->sayname();

    f = new AppleFactory();
    fruit = f->getFruit();
    fruit->sayname();

    delete fruit;
    delete f;

    return 0;
}