简单工厂

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;
}
}
上一篇 下一篇

猜你喜欢

热点阅读