您的位置:首页 > 移动开发 > Android开发

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中选择参数的意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息