C++之简单工厂模式
简单工厂模式属于类的创建型模式,也称为“静态工厂方法模式”。
通过专门定义一个类来负责创建其他类的实例,被创建的实例通常有共同的父类(抽象接口)
解读
1. 具体的工厂创建具体的实例 <工厂创建苹果、香蕉>
2. 工厂返回值类型为抽象的类<工厂返回值为水果类>–>(父类指针指向子类对象)
3. 具体的产品继承于抽象的类<苹果香蕉继承于水果类>–>(继承+虚函数重写)
源码
#include <iostream>
using namespace std;
//**************抽象类接口*******************//
class AbFruit
{
public:
virtual void getFruit() = 0; //1、虚函数(水果)
};
//**************具体实现********************//
class Banana :public AbFruit //2、继承
{
public:
virtual void getFruit() //1.1虚函数重写
{
cout << "香蕉" << endl;
}
};
class Apple :public AbFruit
{
public:
virtual void getFruit()
{
cout << "苹果" << endl;
}
};
//****************工厂********************//
class Factory
{
public:
AbFruit *create(char* p)
{
if (strcmp(p, "banana") == 0) return new Banana;
else if (strcmp(p, "apple") == 0) return new Apple;
else { cout << "错误" << endl; }
}
};
//**************函数入口******************//
void main()
{
Factory *f = new Factory; //具体的工厂,所以new一个
AbFruit *fruit = NULL;
fruit = f->create("banana"); //工厂生产香蕉,
fruit->getFruit(); //获取香蕉, 3.父类指针指向子类对象。 1+2+3有多态产生。
delete fruit;
delete f;
system("pause");
return;
}