最近写项目的时候出现了工厂类比较庞大的后果,而且每次增加对象都要改变工厂类十分不方便,后来整改成和反射结合。
1、首先创建接口类
public interface Animal{
public void sundes();
}
2、创建动物类实现接口
public class Dog implements Animal{
@Override
public void Sounds(){
system.out.print("旺旺");
}
}
public class Cat implements Animal{
@Override
public void Sounds(){
system.out.print("喵喵");
}
}
3、创建工厂类
public class Factory {
public static Animal getInstance(String AnimalName){
Animal a = null;
try {
a = (Animal ) Class.forName(AnimalName).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return a;
}
4、调用工厂方法
public class FactoryImp{
pubic static void main(String[] arg){
Animal animal = Factory.getInstance("dog");
animal.sundes();
}
}
这样就不需要改动工厂类了。不过Factory.getInstance需要传入动物类的全路径,这样也是比较麻烦的,不过我们可以配合配置文件实现