工厂模式

来源:互联网 发布:sql 表字段添加注释 编辑:程序博客网 时间:2024/06/16 17:20

1、 概念

           工厂方法模式同样属于类对的创建型模式又被称为多态工厂模式。工厂方法模式的意义是定义一个创建产品对象的接口,将实际创建对象工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现
的接口,这样进一步抽象化的好处是使得工厂方法模式系统在不修改具体工厂角色的情况下引进新产品。

2、类图角色和职责

           (1)、抽象工厂角色:工厂方法模式的核心,任何工厂类必须实现这个接口欧。

           (2)、具体工厂角色:具体工厂类是抽象工厂的一个实现,负责产品实例化产品对象。

           (3)、抽象角色:工厂方法模式所创建的所有对象的父类,它负责所有父类所描述的共有的公共接口。

           (4)、具体产品角色:工厂方法模式所创建的具体实例对象。

 3、案例:

#include<iostream>using namespace std;class Fruit{public:virtual void sayname() = 0;};class Banan :public Fruit{public:void sayname(){cout << "我是Banana" << endl;}};class Apple :public Fruit {public:void sayname(){cout << "我是Apple" << endl;}};class AbFactory{public:virtual Fruit* CreatFactory() = 0;};class AppleFactory:public AbFactory{public:Fruit* CreatFactory(){return new Apple;}};class BananaFactory :public AbFactory{public:Fruit* CreatFactory(){return new Banan;}};class Pear:public Fruit{public:void sayname(){cout << "我是Pear" << endl;}};class PearFactory :public AbFactory{public:Fruit* CreatFactory(){return new Pear;}};int main(void){AbFactory *factory = NULL;Fruit *fruit = NULL;// 吃香蕉factory = new BananaFactory;fruit = factory->CreatFactory();fruit->sayname();delete fruit;delete factory;// 吃梨factory = new PearFactory;fruit = factory->CreatFactory();fruit->sayname();delete fruit;delete factory;return 0;}