工厂方法模式(Factory method pattern)
来源:互联网 发布:淘宝如何设置自动发货 编辑:程序博客网 时间:2024/06/11 16:00
工厂方法模式(Factory method pattern)
flyfish 2015-7-4
工厂方法模式正式定义 - 引用《HeadFirst 设计模式》
Define an interface for creating an object,but let subclasses decide
which class to instantiate.Factory Method lets a class defer
instantiation to subclasses.定义了一个创建对象的接口,但是由子类决定要实例化的类是那一个,其中的工厂方法让类把实例化推迟到子类
在下列情况下可以使用Factory Method模式:
-引用《设计模式 - 可复用面向对象软件的基础》
1. 当一个类不知道它所必须创建的对象的类的时候。
2. 当一个类希望由它的子类来指定它所创建的对象的时候。
3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
参与者
1 Product
—定义工厂方法所创建的对象的接口。
2 ConcreteProduct
—实现Product接口。
3 Creator
—声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方
法的缺省实现,它返回一个缺省的ConcreteProduct对象。
—可以调用工厂方法以创建一个Product对象。
4 ConcreteCreator
—重定义工厂方法以返回一个ConcreteProduct实例。
C++ 实现
class product{public: virtual void do() = 0;};class concrete_product_1 : public product{public: void do() { //关于产品1的处理 }};class concrete_product_2 : public product{public: void do() { //关于产品2的处理 }};class creator{public: virtual product *create_product() = 0;};class concrete_creator_1 : public creator{public: product *create_product() { return new concrete_product_1 (); }};class concrete_creator_2 : public creator{public: product *create_product() { return new concrete_product_2 (); }}; //使用 creator *c1 = new concrete_creator_1 (); product *p1 = c1->create_product(); p1->do(); creator *c2 = new concrete_creator_2 (); product *p2 = c2->create_product(); p2->do();
当增加产品3的时候,只要再concrete_creator_3和concrete_product_3就可以了,与产品1和产品2无关
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式 Factory Method Pattern
- 工厂方法模式(factory method pattern)
- 二、工厂方法模式(Factory Method Pattern)
- 工厂方法模式 The Factory Method Pattern
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)草书
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式( Factory Method Pattern)
- 工厂方法模式【FACTORY METHOD PATTERN 】
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- convertView&setTag方法的一点理解
- openCV 级联分类器
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
- C++ STL关联容器 set和map学习笔记
- Velocity模板应用
- 工厂方法模式(Factory method pattern)
- 函数后面加const
- 控制台编码 UTF-8
- Android开发遇到的Exception
- Android性能优化——内存优化
- Bonjour聊天室的总体思路
- [note]一些正则表达式
- win7 64 位下 Wireshark 本地抓包
- Ubuntu软件安装,卸载方法