简单工厂
2018-11-05 本文已影响0人
Xiuz_hmy
提供创建对象的功能,不需要管具体的实现。好处:降低客户端与模块之间的耦合度
下面通过一个简单的例子来讲解什么是简单工厂
simple_factory_package_diagram.png simple_factory_class_diagram.PNG simple_factory_sequence_diagram.PNG//这是一个功能接口
public interface Api {
void operator();
}
//ImplA,ImplB,ImplC是这个功能的实现类
public class ImplA implements Api {
@Override
public void operator() {
System.out.println("ImplA.operator");
}
}
现在需要根据不同情况来实现不同的功能,为了方便我们可以封装第一个工厂类来生产响应的功能
public class ApiFactory {
//通过new一个实例化对象来返回所需要的功能,这种方法在安卓源码中应用的非常多
public static Api create(int type) {
switch (type) {
case 1:
return new ImplA();
case 2:
return new ImplB();
case 3:
return new ImplC();
default:
return new ImplA();
}
}
//通过全类名来反射获取对应的对象,这种方法在在安卓中很少见,反而在javaEE中从配置文件加载类中用的特别多
public static <T extends Api> T create(Class<T> clz){
Api api = null;
try {
api = (Api) Class.forName(clz.getName()).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return (T) api;
}
}