工厂模式Patch V1.01

出去吃顿饭的功夫就发现了两个问题。

 

第一个:

新建实例的时候直接用c.newInstance()会不会导致程序在c不存在的时候出错?

测试了一下,如果c不存在的话,场景类里会报错,那看来还是可以直接这么用,不需要Class.forName()。

这段代码会报错:

Product twoThreeThree = factory.createProduct(Product233.class);
twoThreeThree.printName();

 

另一个:

我一开始回忆着敲代码的时候把生产方法设成了静态函数,但是后来想到要new工厂的实例,就把static关键字删掉了。

但是刚才出门之后发现,我完全可以不用实例化工厂类啊。

这样的话,方法头加一个关键字,要用的时候只要

Product one = ProductFactory.createProduct(Product1.class);

就可以了。

 

第三个:

生产方法的参数其实不一定是class,是字符串或者是Enum类型都可以,Enum还更好用一点。

在方法内用参数获取相应的类就行了。

先用空值初始化要返回的对象,如果找不到那个类就返回null就可以了。

posted @ 2014-03-16 20:54  Chihane  阅读(135)  评论(0)    收藏  举报