反射+抽象工厂改进,就是将简单工厂用抽象工厂改进的switch语句部分获取对象方式替换,修改成用反射的方法获取对象,,先上UI类图
这里我们以经典的小案例,造车案例讲述。车企有宝马,大众,比亚迪,每个厂商都能生产油车,电车,混合车。这里因此各继承各抽象的类,实现各自的造车的方法即可。这里简单,不在阐述,主要是反射部分。由于反射这里的作用主要是为了解决由于switch语句违反开放封闭的设计原则,而删掉以后增加各类灵活性会变差的问题。因此这里通过反射获取。而反射获取核心的难点在于获取类名需要路径,ForName部分,这里是采用IO流的方式向文件里输入,然后通过键值对的方式有效的获取。代码如下
反射造车部分,通过以此获取具体想要创建车企的对象
public class CreateCarBrandFactory {
public CreateCarBrandFactory() {
}
public Object CreateCarBrandFactory(String brand,String carType) throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException{
return Class.forName(new Config1("CreateCar.properties").outValue(brand)