工厂模式主要是用来创建对象的。而这些对象,很有可能会变化,变成其它的对象。那我们在设计工厂时,就必须要经得起这样的变化。
在我看到的开源代码中,就有两种方式去适应这种变化。
[list]
[*]使用配置文件
这是一种比较常见的方式,把实体类写在配置文件中。创建时使用反射的方式生成。
[*]使用系统参数
[/list]
这两种方式不单可以在创建工厂的创建对象时使用,还可以在创建工厂类时使用,这样就可以实现更好的扩展性。
在我看到的开源代码中,就有两种方式去适应这种变化。
[list]
[*]使用配置文件
这是一种比较常见的方式,把实体类写在配置文件中。创建时使用反射的方式生成。
String singletonClass = .... // 从配置文件中取得
Class clazz = Class.forName(singletonClass);
Object result = (SingletonStrategy) clazz.newInstance();
[*]使用系统参数
String singletonClass = System.getProperty(
"org.dom4j.DocumentFactory.singleton.strategy",
"org.dom4j.util.SimpleSingleton");
[/list]
这两种方式不单可以在创建工厂的创建对象时使用,还可以在创建工厂类时使用,这样就可以实现更好的扩展性。