或许在开发的过程中可能会遇到诸如:
1. 不能预见创建哪一种类的实例。
2.不希望将类被如何创建或者哪一个类的实例被创建的相关信息暴露给用户。
package fh.first.factory;
/*
* Aim:简单的工厂模式
*/
public class Factory {
/*
* name: getBean
* str: class's name
*/
public static Object getBean(String str){
try {
return Class.forName(str).newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
子类一般都会实现相同的接口,通过接口保存工厂返回的对象指针。
/*
* 测试类
*
*/
public class Test2 extends TestCase{
public void testGetBean(){
/*
* AccountDaoIf :支付接口
*
*/
AccountDaoIf adi=(AccountDao)Factory.getBean("fh.first.ic.AccountDao");
adi.deposit();
}
}
工厂类不完善的地方在于每增加一个子类,都需要在工厂类中增加相应的逻辑判断和代码,所以工厂随着商品的增加会变得越来越不合适,不适合很复杂的业务环境。
原文:http://blog.csdn.net/whynottrythis/article/details/39119405