工厂方法模式

工厂方法模式UML
#pragma once
#include <iostream>
#define SAFE_DELETE(ptr) if(ptr!=NULL){delete ptr; ptr = NULL;}
using namespace std;
class Product
{
public:
virtual void Product_introduction() = 0;
};
class Fruit_Phone : public Product
{
virtual void Product_introduction() { cout << "水果手机创新十足" << endl; }
};
class WuGu_Phone : public Product
{
virtual void Product_introduction() { cout << "五谷手机性价比强悍" << endl; }
};
class Factory
{
public:
virtual Product* createProduct() = 0;
};
class FuTuK_Factory : public Factory
{
public:
virtual Product* createProduct() { return new Fruit_Phone; }
};
class XinXiF_Factory : public Factory
{
public:
virtual Product* createProduct() { return new WuGu_Phone; }
};
int main()
{
Factory* a = new FuTuK_Factory;
Product* aP = a->createProduct();
aP->Product_introduction();
Factory* b = new XinXiF_Factory;
Product* bP = b->createProduct();
bP->Product_introduction();
SAFE_DELETE(a)
SAFE_DELETE(aP)
SAFE_DELETE(b)
SAFE_DELETE(bP)
return 0;
}