一楼的回答不是我想要的回答,这样我还是贴代码吧,把我的思路说一下
class interface Animal{
String action1();
String action2();
}
public class Human implements Animal{
@Override
public String action1() {
return "人类动作1";
}
@Override
public String action2() {
return "人类动作2";
}
}
public class Dog implements Animal{
@Override
public String action1() {
return "狗动作1";
}
@Override
public String action2() {
return "狗动作2";
}
}
public class Cat implements Animal{
@Override
public String action1() {
return "猫动作1";
}
@Override
public String action2() {
return "猫动作2";
}
}
public class Yundonghui{
Animal animal;
public void run(int type){
//根据type的不同值,使用不同的对象,产生不同的animal
animal = Factory.createAnimal(type);
//使用这个animal的对象进行动作1,动作2
animal.action1();
//.........其他动作
animal.action2();
}
}
class Factory{
public Animal createAnimal(int type){
//这里我现在的思路是用了一个swich语句去判断
if(type == 1){
return new Human();
}
//............
//这里还是需要判断类型值去选择到底创建的是哪个
return null;
}
}
上面的代码还是太硬了,如果再出其他的动物,还是要修改Factory这里的代码,我不想要修改代码,直接实现接口,并传入不同的值就能够使用了。我想要达到对修改关闭,对扩展开放的原则,可是始终无法达到