C++ 设计模式之二(Factory Method模式)
2007-08-30 11:36
288 查看
工厂方法(Factory Method)模式的核心是一个抽象工厂类,各种具体工厂类通过抽象工厂类将工厂方法继承下来。这样,使得客户只关心抽象产品和抽象工厂,完全不用理会返回的是哪一种具体产品,也不用关心它是如何被具体工厂创建的。
UML 结构图
下面的例子演示了钢笔厂和铅笔厂的工作过程。
Product.h 代码如下:
/*
作者: zhang_gl
blog:http://blog.csdn.net/zgl_dm/
描述:Fatory Method Pattern
*/
#ifndef _PRODUCT_H_
#define _PRODUCT_H_
#include "Factory.h"
class Product
...{
public:
virtual void Output()=0;
};
class Pen:public Product
...{
public:
void Output();
};
class Pencil:public Product
...{
public:
void Output();
};
#endif
Factory.h 代码如下:
#ifndef _FACTORY_H_
#define _FACTORY_H_
#include "Product.h"
#include <iostream>
#include <string>
using namespace std;
class Product;
class Pen;
class Pencil;
class Factory
...{
public:
virtual Product* Produce()=0;
};
class PenFactory:public Factory
...{
public:
Product *Produce();
};
class PencilFactory:public Factory
...{
public:
Product *Produce();
};
#endif
Product.cpp 代码如下:
#include "Product.h"
void Pen::Output()
...{
cout<<"The pen is produced ";
}
void Pencil::Output()
...{
cout<<"The Pencil is produced ";
}
Factory.cpp 代码如下:
#include "Factory.h"
Product * PenFactory::Produce()
...{
return new Pen();
}
Product * PencilFactory::Produce()
...{
return new Pencil();
}
Main 函数如下:
#include "Factory.h"
#include "Product.h"
void main()
...{
Factory *factory=new PenFactory();
Product *product=factory->Produce();
product->Output();
factory=new PencilFactory();
product=factory->Produce();
product->Output();
}
UML 结构图
下面的例子演示了钢笔厂和铅笔厂的工作过程。
Product.h 代码如下:
/*
作者: zhang_gl
blog:http://blog.csdn.net/zgl_dm/
描述:Fatory Method Pattern
*/
#ifndef _PRODUCT_H_
#define _PRODUCT_H_
#include "Factory.h"
class Product
...{
public:
virtual void Output()=0;
};
class Pen:public Product
...{
public:
void Output();
};
class Pencil:public Product
...{
public:
void Output();
};
#endif
Factory.h 代码如下:
#ifndef _FACTORY_H_
#define _FACTORY_H_
#include "Product.h"
#include <iostream>
#include <string>
using namespace std;
class Product;
class Pen;
class Pencil;
class Factory
...{
public:
virtual Product* Produce()=0;
};
class PenFactory:public Factory
...{
public:
Product *Produce();
};
class PencilFactory:public Factory
...{
public:
Product *Produce();
};
#endif
Product.cpp 代码如下:
#include "Product.h"
void Pen::Output()
...{
cout<<"The pen is produced ";
}
void Pencil::Output()
...{
cout<<"The Pencil is produced ";
}
Factory.cpp 代码如下:
#include "Factory.h"
Product * PenFactory::Produce()
...{
return new Pen();
}
Product * PencilFactory::Produce()
...{
return new Pencil();
}
Main 函数如下:
#include "Factory.h"
#include "Product.h"
void main()
...{
Factory *factory=new PenFactory();
Product *product=factory->Produce();
product->Output();
factory=new PencilFactory();
product=factory->Produce();
product->Output();
}
相关文章推荐
- 设计模式 - 简单工厂模式/静态工厂模式(Static Factory Method) C++实现
- C++设计模式之工厂方法模式(Factory Method)
- C++设计模式之三:Factory Method(工厂方法)
- c++ 设计模式8 (Factory Method 工厂方法)
- 浅谈C++设计模式之工厂方法(Factory Method)
- 设计模式 - 工厂方法(Factory Method) C++实现
- c++设计模式(5)-Factory Method
- 面向对象的设计模式系列之二:工厂方法模式(FactoryMethod)
- C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
- C++设计模式 之 “对象创建”模式:Factory Method、Abstract Factory、Prototype、Builder
- C++设计模式之Factory Method
- c++ 设计模式8 (Factory Method 工厂方法)
- 面向对象的设计模式系列之二:工厂方法模式(FactoryMethod)
- 设计模式之二 工厂方法模式 Factory Method
- 设计模式-创建型-Factory Method(工厂方法)
- 设计模式之C#实现--FactoryMethod
- C++实现设计模式: Factory 工厂模式
- C++设计模式之二--Proxy代理模式
- 设计模式C++之五(Factory Method工厂方法模式)
- 设计模式之工厂方法模式(Factory Method)