研磨设计模式学习笔记1--简单工厂(SimpleFactory)

需求:实现一个简单工厂,客户端根据需求获取实现类。

简单工厂优点:

  1. 客户端不需要知道工厂内部实现,然组件外部实现面向接口编程。
  2. 客户端、实现类解耦。

一、接口及实现类

//接口
public interface Api {
    void say();
}
//实现类A
public class ImplA implements Api {
    @Override
    public void say() {
        System.out.println("ImplA");
    }
}
//实现类B
public class ImplB implements Api {
    @Override
    public void say() {
        System.out.println("ImplB");
    }
}

二、工厂

public class Factory {
    public static Api createApi() throws Exception{
        InputStream is = Client.class.getResourceAsStream("peizhi.properties");//配置文件中配置需要的实现类名称
        Properties properties = new Properties();
        properties.load(is);
        String className = (String) properties.get("impl");
        return (Api) Class.forName(className).newInstance();

    }
}
peizhi.properties内容:impl=pattern.simplefactory.ImplB(包名+实现类名)

tips:关于加载propertie一些小结 https://www.cnblogs.com/liuboyuan/p/9595412.html

客户端:

public class Client {
    public static void main(String[] args) throws Exception {
        Api api = Factory.createApi();
        api.say();//执行结果:ImplB

    }
}

 

posted @ 2018-09-05 22:25  扶不起的刘阿斗  阅读(240)  评论(0编辑  收藏  举报