AbstractFactory - 抽象工厂模式
概述:
将关联零件组装成产品
抽象工厂就是将抽象零件组装成抽象产品
也就是说,我们不关心零件的具体实现,只关心API,我们仅使用API将零件组装成产品
说明:
1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系我删除!
转载请标注出处!
案例:
案例说明:
将带有层次关系的集合制作曾html文件
主要代码:
代码链接:传送门
uml综述
AbstractProduct: 定义AbstractFactory角色所生成的抽象零件和产品的接口(API)
AbstractFactory: 定义生成抽象产品的接口 (API)
Client: 仅调用AbstractFactory,AbstractProduct进行工作,对于具体实现一无所知
ConcreteProduct: 实现AbstractProduct接口
ConcreteFactory: 实现AbstractFactory接口
收获:
- AbstractFactory模式, 易于增加具体的工厂,蓝雨增加新的零件
- something.getClass().newInstance() ,调用此方法时可能会抛出异常InstantiationException,所以try…catch, 或者throws关键字
相关设计模式:
- Builder : 分阶段制作复杂实例
- AbstractFactory: 调用抽象产品的API组装抽象产品,生成复杂实例
- Factory Method : AbstractFactory 调用Factory Method
- Composite, singleton : 会被AbstractFactory 调用
Question :
- 他只调用了弗雷德构造函数,若果不需要其他处理,为什么还要特意定义ListLink类的构造函数?
package Gof.AbstractFactory.listfactory;
import Gof.AbstractFactory.factory.Link;
public class ListLink extends Link {
public ListLink(String caption, String url) {
super(caption, url);
}
public String makeHTML() {
return " <li><a href=\"" + url + "\">" + caption + "</a></li>\n";
}
}
- answer: java 无法继承构造函数
注意:
此部分内容属于对GOF Design Pattern知识的初步认知阶段,参考书籍是结城浩的《图解设计模式》,简单易懂,十分推荐!
以上内容,作者一字一句码出来的,纯属不易,欢迎大家转载,转载是还请您表明出处。另外如果我有侵权行为,请在下方留言,确认后我会及时撤销相应内容,谢谢大家!
PS:欢迎大家来到我的小站,鸣谢!
猜你喜欢