您的位置:首页 > 其它

动态工厂模式---(3)

2016-07-26 10:51 435 查看
动态工厂模式:

虽然简单工厂模式的使用消除了客户端对接口实例的依赖,将其实例化交给工厂类来实现,但是工厂类对接口实例的依赖依然很强,当需要增加新的子类时,不仅需要编写相应的子类实现,还需要修改工厂类支持。这种强依赖不利于系统的扩展。

工厂类的唯一职责就是生产不同的对象。那么除了用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 = new Factory2();
Operator operator = factory.createOperator("OperatAdd");  //如果使用减法运算,只需更改传入的参数
operator.setOperatA(2);
operator.setOperatB(3);
System.out.println(operator.getResult());
}
}


这样通过java的反射原理创建接口对象,消除了工厂类对接口实现类的依赖。使用反射具有很好的可扩展性,这样当我们需要扩展运算时,只需要实现具体的类即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: