Factory——工厂方法
来源:互联网 发布:实现梦想 知乎 编辑:程序博客网 时间:2024/06/11 19:12
一、定义
GOF上对工厂方法的意图如此描述:定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method使一个类的实例化延迟到其子类。
作为类的开发者,我们通常会在类中提供构造器方法以便客户代码实例化该类。然而有时候,客户代码并不清楚该对几个类中的哪一类进行实例化。可以用工厂模式定义一个用于创建对象的接口,同时控制对哪个类进行的实例化。
二、应用场景
工厂方法模式的特征是:
(1)方法创建了一个新的对象;
(2)方法的返回类型为一个抽象类或接口;
(3)有若干个类实现了上述抽象类型。
三、类图
四、例子
(1)工厂方法最典型的一个例子就是在迭代器模式中的应用,这里的工厂方法链接了两个平行的类层次结构。
当一个类将它的一些职责委托给一个独立的类时,就产生了平行类层次。迭代器模式中,各个组合类型将遍历元素的操作独立出
来,形成了迭代器类层次。
每个组合类型都和一个相应类型的迭代器对应。组合类的对象需要实例化对应自己的迭代器(通过CreateIterator方法),这里的
CreateIterator方法就是工厂方法。 具体代码可以看之前的迭代器模式日志。
(2)工厂方法还能为子类提供hook,用工厂方法在一个类的内部创建对象通常比直接创建对象更为灵活。
GOF的代码示例里利用了MazeGame的例子,基类提供了Maze,Room,Wall等的工厂方法默认实现。子类通过重载这些方法,
可以利用createMaze方法创建带有炸弹的迷宫。这样更有灵活性,由子类决定实例化哪个类型的迷宫组件。
- Factory——工厂方法
- 工厂方法模式——Factory Method
- 工厂方法——Factory Method
- 设计模式——工厂方法模式【Factory Method Pattern】
- 设计模式之——工厂方法(factory)
- 设计模式——工厂方法Factory Method
- 【设计模式】Factory Method Pattern——工厂方法模式
- C#设计模式——工厂方法模式(Factory Method)
- Java设计模式 —— 工厂方法模式 (Factory Method)
- 软件设计模式——工厂方法模式(Factory Method)
- Java设计模式——工厂方法(Factory Method)
- 设计模式(3)——工厂方法 Factory Method
- JAVA设计模式 —工厂方法模式(Factory Method)
- 设计模式 — 工厂方法模式(Factory Method)
- 《GOF设计模式》—工厂方法(Factory Method)—Delphi源码示例:工厂方法接口
- Factory Method 工厂方法
- 工厂方法factory method
- 工厂方法Factory Method
- LeetCode Plus One
- iOS第三方开源库的吐槽和备忘
- (standard c libraries translation )getpw
- C# 实现3Des加密 解密 - SummerA
- 上传下载(上传图片 上传文件 下载文件)
- Factory——工厂方法
- Google Maps地图投影全解析(1):Web墨卡托投影
- windows7无法访问局域网共享,0x800704b3报错解决
- 不害臊
- uboot编译分析
- 无法启动WORKSTATION服务解决方案
- x264宏块模式选择
- 79. 利用代码分析工具
- android 实现ScrollView自动滚动