Android重拾设计模式系列——简单工厂模式
2016-11-10 16:50
260 查看
定义及实质
定义提供一个创建对象实例的功能(接口),而客户调用时无须关心实现过程。属于创建型模式。
实质
选择实现。
模式图解
简单工厂模式UML图
解释:
从上图可以看出:
1. Factory依赖了Api接口和两个接口的实现类;
2. 而Client依赖Factory和Api接口;
3. ImpA和ImpB是Api接口的不同实现;
Factory工厂类承担了对象实例的创建,而Client只需调用Factory提供的方法(通常是静态方法)就可以获取相应的对象实例,Client完全不清楚对象是如何创建的。
这种模式实现了用户和对象的解耦,当对象发生变化时,我们无须改动用户的调用,只需在Factory中修改或增加就可以。
//对象 public interface Api{ public void doSomething(); } public ImpA implements Api{ @Override public void doSomthing(){ System.out.println("这里是ImpA"); } } public ImpB implements Api{ @Override public void doSomthing(){ System.out.println("这里是ImpB"); } } //Factory public class ApiFactory{ public static Api getApi(int type){ Api api = null; if(type == 0){ api = new ImpA(); } else if(type == 1){ api = new ImpB(); } return api; } } //Client public class Client{ Api api; public client(){ //注意,这里用户并不知道它所获得的对象实例是怎么创建的。 api = Factory.getApi(0); if(api != null){ api.doSomthing(); } } }
简单工厂模式顺序图
结合上面代码来看。
模式优缺点
优势
封装:封装用户创建对象实例的过程。解耦:使用户不用去关心对象实例的创建过程,并且依赖于抽象。
缺点
用户往往需要知道Factory中选择参数的意义。相关文章推荐
- Android重拾设计模式系列——工厂方法模式
- Android重拾设计模式系列——适配器模式
- Android重拾设计模式系列——单例模式的5种实现
- Android重拾设计模式系列——生成器模式
- Android重拾设计模式系列——抽象工厂模式
- Android重拾设计模式系列——外观模式
- Android设计模式系列(8)--SDK源码之工厂方法模式
- Android设计模式系列(9)--SDK源码之适配器模式
- Android设计模式系列(7)--SDK源码之命令模式
- Android设计模式系列(6)--SDK源码之享元模式
- Android设计模式系列(3)--SDK源码之单例模式
- 设计模式实现系列-简单工厂模式-工厂模式-抽象工厂模式
- Android设计模式系列(3)--SDK源码之单例模式
- Android设计模式系列(2)--SDK源码之观察者模式
- Android设计模式系列(4)--SDK源码之模板方法模式
- Android设计模式系列(7)--SDK源码之命令模式
- Android中设计模式无处不在之简单工厂模式和代理模式
- Android设计模式系列(4)--SDK源码之模板方法模式
- 极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)
- Android设计模式系列(10)--SDK源码之原型模式