动态工厂模式:
虽然简单工厂模式的使用消除了客户端对接口实例的依赖,将其实例化交给工厂类来实现,但是工厂类对接口实例的依赖依然很强,当需要增加新的子类时,不仅需要编写相应的子类实现,还需要修改工厂类支持。这种强依赖不利于系统的扩展。
工厂类的唯一职责就是生产不同的对象。那么除了用new 来创建对象之外还有没有其他的方法?这就用到类的反射了。看下面的代码:
class Factory2
{
public static Operator createOperator(String name) throws Exception
{
try
{
Class clazz = Class.forName(name); //通过反射得到类的Class对象
return (Operator) clazz.newInstance(); //通过class对象创建实例
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
return null;
}
}
}
public class Test
{
public static void main(String[] args) throws Exception
{
Factory2 factory =