FactoryMethod
概述:
将实例的生成交给子类
说明:
1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系我删除!
转载请标注出处!
案例:
- 案例说明:
制作身份证
- 主要代码:
- IDFactory.java
Gof.FactoryMethod.idcard;import java.util.ArrayList; import java.util.List; import Gof.FactoryMethod.framework.Factory; import Gof.FactoryMethod.framework.Product; public class IDCardFactory extends Factory { private List owners = new ArrayList(); protected Product createProduct(String owner) { return new IDCard(owner); } protected void registerProduct(Product product) { owners.add(((IDCard)product).getOwner()); } public List getOwners() { return owners; } }
- 代码链接:传送门
uml综述
- Product: 抽象类,定义实例的接口
- Creator: 生成Product 的抽象类, 不用new 生成,而是调用生成实例的专用方法生成实例,防止父类与其他具体类的耦合
- ConcreteProduct: 决定具体的产品
- ConcreteCreator:生成具体的产品
收获:
- 程序中添加注释和开发文档记录帮助其他人理解程序
- 抽象类无法定义构造方法
相关设计模式:
- Temeplate Method : factory method is a classic application of temeplate method.
- Singleton : Slingleton 扮演 creator (concreteCreator)角色
- Composite : 有时将 composite 用于 Product (ConcreteProduct)角色
- Iterator: Iterator 生成实例时有时会用到 Factory Method.
注意:
此部分内容属于对GOF Design Pattern知识的初步认知阶段,参考书籍是结城浩的《图解设计模式》,简单易懂,十分推荐!
以上内容,作者一字一句码出来的,纯属不易,欢迎大家转载,转载是还请您表明出处。另外如果我有侵权行为,请在下方留言,确认后我会及时撤销相应内容,谢谢大家!
PS:欢迎大家来到我的小站,鸣谢!
w
猜你喜欢