一起来学设计模式(3)——工厂模式
来源:互联网 发布:第三次经济普查数据库 编辑:程序博客网 时间:2024/05/15 20:34
上一节介绍了简单工厂模式,这一节介绍一下工厂模式。
工厂模式与简单工厂模式的主要区别是:
1 . 在简单工厂模式中,通过一个具体的简单工厂类来创建不同的产品,而在工厂模式中,有一个抽象的工厂类,然后派生出不同的具体的工厂类,每个具体的工厂类仅能创建一种产品。
2. 在简单工厂模式中,如果要创建一种新的产品,需要修改简单工厂类,而在工厂模式中,仅需要继承现有的抽象工厂类,不会破坏之前的封装,扩展性提高了。
UML图如下如图所示:
/*** @file Factory.h* @brief * @author Don Hao* @date 2011-9-1 16:01:44* @version * <pre><b>copyright: </b></pre>* <pre><b>email: </b>hao.limin@gmail.com</pre>* <pre><b>company: </b>http://blog.csdn.net/donhao</pre>* <pre><b>All rights reserved.</b></pre>* <pre><b>modification:</b></pre>* <pre>Write modifications here.</pre>*/#ifndef _FACTORY_H#define _FACTORY_H#include <iostream>#include <string>class Fruit1{public: Fruit1() { } virtual ~Fruit1() { }};class Apple1: public Fruit1{public: Apple1() { std::cout << "Apple1" << std::endl; } virtual ~Apple1() { }};class Pear1 : public Fruit1{public: Pear1() { std::cout << "Pear1" << std::endl; } virtual ~Pear1() { }};class Factory{public: Factory() { } virtual ~Factory() { } virtual Fruit1* createFruit1() = 0;};class FactoryApple1 : public Factory{public: FactoryApple1() { } virtual ~FactoryApple1() { } virtual Fruit1* createFruit1() { return new Apple1(); }};class FactoryPear1 : public Factory{public: FactoryPear1() { } virtual ~FactoryPear1() { } virtual Fruit1* createFruit1() { return new Pear1(); }};#endif /**< _FACTORY_H */
/*** @file Factory.c* @brief * @author Don Hao* @date 2011-9-1 16:01:43* @version * <pre><b>copyright: </b></pre>* <pre><b>email: </b>hao.limin@gmail.com</pre>* <pre><b>company: </b>http://blog.csdn.net/donhao</pre>* <pre><b>All rights reserved.</b></pre>* <pre><b>modification:</b></pre>* <pre>Write modifications here.</pre>*/#include "Factory.h"void main(){ FactoryApple1 fApple; Fruit1* apple = fApple.createFruit1(); FactoryPear1 fPear; Fruit1* pear = fPear.createFruit1();}
可以看到,有个抽象的工厂类Factory,派生出了两个具体的工厂类FactoryApple1和FactoryPear1,并且FactoryApple1仅能创建Apple对象,FactoryPear1仅能创建Pear对象。
- 一起来学设计模式(3)——工厂模式
- 一起来学设计模式(2)——简单工厂模式
- 一起来学设计模式(4)——抽象工厂模式
- 一起来学设计模式(5)——适配器模式
- 一起来学设计模式(1)——单例模式
- 讲故事,学(Java)设计模式—工厂模式
- 讲故事,学(Java)设计模式—抽象工厂模式
- 重学设计模式——工厂方法模式
- 研磨设计模式之工厂方法模式-3——跟着cc学设计系列
- 设计模式(3)——工厂设计模式
- 设计模式(3)——工厂模式
- Java—设计模式(工厂模式)
- 设计模式—工厂模式(五)
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- VC2005的程序文件分发问题及解决
- 我碰到的编程陷阱
- fedora搭建xampp
- BAS和SR设备
- MSSQL数据库游标
- 一起来学设计模式(3)——工厂模式
- connman简介
- 守护进程测试
- iphone调试 gdb基本命令和技巧
- MFC 单文档添加ListView方法片段
- 批量删除版本库中的.svn文件夹(win客户端)
- C# 中如何操作系统服务?注意事项有哪些?给出代码片段!(图)
- onFling无法触发
- 解决UltraEdit打开UTF-8文件光标定位不准的问题