出去吃顿饭的功夫就发现了两个问题。
第一个:
新建实例的时候直接用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就可以了。