每天一学设计模式之抽象工厂模式
来源:互联网 发布:post请求传递json 编辑:程序博客网 时间:2024/04/25 13:35
不好意思,昨天没有来得及学习,今天补上抽象工厂模式。
抽象工厂方法,是一种比较常用的模式。
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.(为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。)
抽象工厂模式的通用类图:
下面来看一下抽象工厂模式的通用代码:
抽象产品类:
public abstract class AbstractProductA{ //通用方法 public void shareMethod(){ ... } //相同方法,不同处理实现 public abstract void doSomething();}具体产品类A1:
public class ProductA1 extends AbstractProductA{ //相同方法,不同处理实现 public void doSomething(){ System.out.println("产品A1..."); } }
具体产品类A2:
public class ProductA2 extends AbstractProductA{ //相同方法,不同处理实现 public abstract void doSomething(){ System.out.println("产品A2..."); } }可以像A类产品一样实现多个这样子的产品类,这里我们假设再实现了一个同样的B类产品类。我们再来看一下抽象工厂类的代码:
public abstract class AbstractFactory{ //生产A类产品,具体生产A1类产品还是A2类产品,在具体的工厂实现类中实现... public abstract AbstractProductA createProductA(); //生产B类产品 public abstract AbstractProductB createProductB(); }在抽象工厂类中根据产品类型的个数来定义产品生产线的个数。再来看一下具体的工厂实现类:
public class Factory1 extends AbstractFactory{ //生产A1类产品,具体生产A1类产品还是A2类产品,在具体的工厂实现类中实现... public AbstractProductA createProductA(){ return new ProductA1();} //生产B2类产品 public AbstractProductB createProductB(){ return new ProductB2();}; }在这里可以根据需求实现具体工厂类,可以任意组合不同类型产品的不同类型实现。下面来看一下抽象工厂模式的优缺点:
优点:
1.封装性,我们不需要去关注产品的实现,只需要去关注一下工厂类,关注工厂类可以生产怎么样的产品就可以了。
2.产品类族之间的约束为非公开状态。产品A与产品B直接有什么样的约束关联,在工厂类中我们并不关注,即上层模块不用关心底层的实现和关联。
缺点:
产品族扩展非常复杂。例如需要增加一个C产品,上述的代码需要修改的工作量会很大,更加复杂的场景就会带来更加巨大的工作量。
抽象工厂模式的试用场景:
0 0
- 每天一学设计模式之抽象工厂模式
- 每天一学设计模式之工厂方法模式
- 每天学一点设计模式-抽象工厂模式
- 每天一整理-java设计模式之工厂模式模式
- 跟JBPM学设计模式之抽象工厂模式
- 菜鸟学设计模式系列笔记之抽象工厂模式
- 学点设计模式-抽象工厂模式
- 每天一学设计模式之单例模式
- 每天一学设计模式之模板方法模式
- C++设计模式之抽象工厂模式(一)
- 设计模式之抽象工厂
- 设计模式 之 抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 蓝色柠檬汽水的做法
- 短信监控器
- python3 fibonacci的高效解法
- 【NOIP2014】 联合权值
- nyoj-722数独
- 每天一学设计模式之抽象工厂模式
- 基于bootstrap3的表格组件
- CSS 之 overflow
- 【ITOO虐心之旅】——纵你虐我千百遍,我仍视你为初恋
- 我给小楠讲历史—上下五千年
- 数据结构实验之二叉树二:遍历二叉树
- oracle sys/system用户的默认密码
- hd 2612 Find a way (BFS)
- 图论之并查集-find the most comfortable road