设计模式-创建型02-工厂方法
2013-12-30 22:35
736 查看
一,动机
针对前面的简单工厂,虽然能比较方便的创建对象,但是,它对拓展很不方便。假如要增加一个新的产品则必须修改工厂的方法,这不符合“开闭原则”.于是,工厂方法模式应运而生,
二,定义
工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,将产品的实例化延迟到工厂子类中。这样的话,添加一个新的产品,只需要添加一个新的工厂和一个新的产品类即可。
三,模式结构
1.Factory 抽象的父工厂
负责定义工厂的公共接口
2.Concrete[b]Factory 具体子工厂[/b]
负责各子产品的具体实现
3.Product 抽象产品角色
工厂所创建的所有对象的父类
4.ConcreteProduct 具体产品角色
工厂的创建目标
四,代码实例
代码运行结果
如果要拓展一个博士生产品的话,只需要增加一个博士工厂,继承学校工厂,和一个博士生类即可。不必要修改之前的代码。这就是对修改关闭,对拓展开放。
针对前面的简单工厂,虽然能比较方便的创建对象,但是,它对拓展很不方便。假如要增加一个新的产品则必须修改工厂的方法,这不符合“开闭原则”.于是,工厂方法模式应运而生,
二,定义
工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,将产品的实例化延迟到工厂子类中。这样的话,添加一个新的产品,只需要添加一个新的工厂和一个新的产品类即可。
三,模式结构
1.Factory 抽象的父工厂
负责定义工厂的公共接口
2.Concrete[b]Factory 具体子工厂[/b]
负责各子产品的具体实现
3.Product 抽象产品角色
工厂所创建的所有对象的父类
4.ConcreteProduct 具体产品角色
工厂的创建目标
四,代码实例
#include <iostream> using namespace std; class Student { public: virtual void Say()=0; }; class School { public: virtual Student* produceStudent() = 0; }; class UnderGraduate: public Student { public: void Say() { cout<<"我是本科生......很高兴得到聘用"<<endl ; } }; class PostGraduate: public Student { public: void Say() { cout<<"我是研究生......初次见面,多多关照"<<endl ; } }; class UnderGraduateSchool : public School { UnderGraduate* produceStudent() { cout<<"这里是本科生学校"<<endl; return new UnderGraduate(); } }; class PostGraduateSchool : public School { PostGraduate* produceStudent() { cout<<"这里是研究生学校"<<endl; return new PostGraduate(); } }; int main() { School* sch = new PostGraduateSchool(); //假如是java的话,可以使用反射机制,就更加方便拓展了。 Student* st=sch->produceStudent(); st->Say(); return 0; }
代码运行结果
这里是研究生学校 我是研究生......初次见面,多多关照
如果要拓展一个博士生产品的话,只需要增加一个博士工厂,继承学校工厂,和一个博士生类即可。不必要修改之前的代码。这就是对修改关闭,对拓展开放。
相关文章推荐
- Golang设计模式-创建型-工厂方法
- 设计模式-3.3 Factory Method(工厂方法) 对象创建型模式
- 【23种设计模式】创建型模式 > 三个工厂模式(简单工厂、抽象工厂、工厂方法)
- 设计模式-创建型-工厂方法
- 设计模式(三)、FACTORY METHOD(工厂方法)---对象创建型模式
- Java设计模式圣经连载(02)-工厂方法(Factory Method)模式
- C#面向对象设计模式纵横谈(四) --- Factory Method 工厂方法(创建型模式)
- Java常用的设计模式02:常用设计模式之工厂模式(创建型模式)
- 创建型设计模式之手工打造、简单工厂、工厂方法和抽象工厂(新)
- 设计模式--创建型-FactoryMethod(工厂方法)
- JAVA设计模式之工厂方法 (创建型模式)
- (4)设计模式方法-创建型设计模式--:简单工厂模式【【【工厂方法模式
- 二十三种设计模式之创建型模式之工厂方法
- 设计模式(四)—工厂方法(创建型)
- 一起来学设计模式-----创建型模式之工厂方法
- 设计模式-创建型模式-工厂方法
- [设计模式-创建型]工厂方法(Factory Method)
- [设计模式学习笔记二][创建型模式][工厂方法(Factory Method)]
- 设计模式-创建型模式之 Factory Method(工厂方法)
- 设计模式之我的理解----创建型模式:工厂方法