大话设计模式-Study-Tips-第五章-工厂方法模式
2017-08-25 20:22
211 查看
一、UML图
二、包含的角色
Product类,定义工厂方法创建对象的接口ConreteProduct类,具体产品类,实现Product接口
Creator类,工厂方法类基类,声明了工厂方法,该方法返回一个Product类。
ConcreteCreator类,重写工厂方法,返回ConcreteProduct实例。
三、特点
定义:工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。1.与简单工厂相比,制造产品的工厂类不只有一个,而是每种具体产品都对应一个生产它的具体工厂类,这些具体工厂类的共同特征再被提取出来形成一个抽象产品类,这些具体铲平类都继承自这个抽象产品类。
2.当需要增加一种产品的时候,需要做的是:增加一种继承自抽象产品的具体产品类,增加一个集成自抽象工厂的具体工厂类,改客户端,而不需要像简单工厂模式中那样更改工厂内的switch。
四、代码实现
c#版这里只实现工厂类Creator类public abstract class Creator {public abstract Product FactoryMethod();
}ConcreteCreator类public class ConcreteCreator : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProduct();
}
}调用方式:可改变下面creator 来new不同的具体产品
Creator creater = new ConcreteCreator(); Product product = creater.FactoryMethod();
c++版本Creator.h#include "Product.h"
class Creator {
public:
virtual Product* FactoryMethod();
};Creator.cpp
#include "Creator.h" Product* Creator::FactoryMethod() { return new Product(); }ConcreteCreator.h#include "Creator.h"
#include "ConcreteProduct.h"
class ConcreteCreator : public Creator {
public:
Product* FactoryMethod();
};ConcreteProduct.cpp
#include "ConcreteCreator.h" Product* ConcreteCreator::FactoryMethod() { return new ConcreteProduct(); }调用方式: Creator* creater = new ConcreteCreator();
Product* product = creater->FactoryMethod();
相关文章推荐
- 大话设计模式-Study-Tips-第二章-策略模式
- 大话设计模式-Study-Tips-第四章-代理模式
- 大话设计模式-Study-Tips-第三章-装饰模式
- 大话设计模式-Study-Tips-第一章-简单工厂模式
- Android之大话设计模式 第五章----迪米特法则----慈禧太后为什么不和陌生人说话
- 2009-03-26读书记录:《大话设计模式》第五章——依赖倒转原则
- 大话设计模式读书 笔记(六) 工厂方法模式
- 大话设计模式C++实现-第8章-工厂方法模式
- 大话设计模式----工厂方法模式
- 《大话设计模式》java实现之工厂方法模式
- 《大话设计模式》第五章
- 大话设计模式-----(三)工厂方法模式、原型模式、模板方法模式
- 笔记-大话设计模式-08 工厂方法模式
- 《大话设计模式》--工厂方法模式
- 【大话设计模式】—— 工厂方法模式
- 《大话设计模式》——读后感 (5)雷锋依然在人间?——工厂方法模式
- 大话设计模式——工厂方法模式(C++计算器修改)
- 大话设计模式-----工厂方法模式
- 大话设计模式8 c++实现——工厂方法模式