AnimalFactory的类,通过传入不同参数能够创建不同的子类对象
class AnimalFactory{
public static Animal getAnimal(int msg){
Animal a1= null;
switch(msg){
case 1:
a1 = new Cat();
break;
case 2:
a1 = new Dog();
break;
case 3:
a1 = new Fish();
break;
default:
System.out.println("无效的消息:"+msg);
}
return a1;
}
}
####################
//优势是简单
//缺点是硬编码,以后将Cat()改了,需要重新编译一次
Animal a1 = new Cat();
//改进获取对象的方式
//代码只和父类Animal 工厂类相关,和具体的子类无关
//以后更改业务甚至无需修改代码
//使用父类和工厂类,能达到解耦合
Animal a2 = AnimalFactory.getAnimal(1);
Animal a3 = AnimalFactory.getAnimal(2);
System.out.println(a2 instanceof Cat);
System.out.println(a3 instanceof Dog);
网友评论