FactoryMethod

概述:

将实例的生成交给子类

FactoryMethod_sample


说明:

1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系删除!
转载请标注出处!


案例:

  • 案例说明:

    制作身份证

  • FactoryMethod_uml_case
  • 主要代码:
  • 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综述FactoryMethod_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