大话设计模式-Study-Tips-第五章-工厂方法模式
来源:互联网 发布:十三陵灵异事件知乎 编辑:程序博客网 时间:2024/04/19 09:12
一、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();
阅读全文
0 0
- 大话设计模式-Study-Tips-第五章-工厂方法模式
- 大话设计模式-Study-Tips-第一章-简单工厂模式
- 大话设计模式-Study-Tips-第二章-策略模式
- 大话设计模式-Study-Tips-第三章-装饰模式
- 大话设计模式-Study-Tips-第四章-代理模式
- 大话设计模式 工厂方法
- 大话设计模式笔记----工厂方法模式
- 大话设计模式_工厂方法模式
- 大话设计模式之工厂方法模式
- 大话设计模式--工厂方法模式
- 《大话设计模式》-- 7.工厂方法模式
- 大话设计模式 工厂方法模式
- 大话设计模式-工厂方法模式
- 大话设计模式-工厂方法模式
- 大话设计模式08----工厂方法模式
- 大话设计模式(六)工厂方法模式
- 大话设计模式-工厂方法模式
- 大话设计模式之工厂方法模式
- String 源码简析
- CodeVS1219 骑士游历 解题报告【棋盘型DP】
- PostgreSQL数据库Dig5
- 知识体系
- 使用snownlp进行情感分析
- 大话设计模式-Study-Tips-第五章-工厂方法模式
- mac 软件假死杀进程
- Vue + axios 小坑随笔(跨域部分)
- LeetCode 198. House Robber(Python)
- lua学习
- MVP 模式简单易懂的介绍方式
- 软件的三种版本
- C# 理解lock
- PowerDesigner16.5详细操作【生成数据字典】