java设计模式学习笔记--可配置的简单工厂模式

来源:互联网 发布:三体结局 知乎 编辑:程序博客网 时间:2024/05/29 13:41

提出问题

试想在简单工厂模式中如果添加实现类到现有的系统中,那么就需要修该工厂类,因为修改方式很简单,在这里就不举例了。如果每次都这样做,也太那个啥了。。。

解决问题

在这里有一种解决方案就是使用配置文件,当有了新的实现类后,只要在配置文件里配置上新的实现类就好了。可以利用反射或者Ioc/DI(控制反转/依赖注入)来实现。

工厂实现如下:

public class Factory2{    public static People CreatePeople() {        Properties pro = new Properties();        People people = null;        InputStream ins;        ins = Factory2.class.getResourceAsStream("factory.properties");        try {            pro.load(ins);        } catch (IOException e1) {            e1.printStackTrace();        }        String implClassStr = pro.get("implClass").toString();        try {            Class cla = Class.forName(implClassStr);            people = (People) cla.newInstance();        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {            e.printStackTrace();        }        return people;    }}

其它的实现类和接口读者可以参考上篇文章。

=======================================

<以上类容均来自于《研磨设计模式》, author:陈臣 & 王斌>

0 0