求教java se的工厂设计模式的返回值问题
大家看以下代码,里面红色的工厂类的返回值怎么是接口的名称呢???返回值用String怎么不行呢???
interface Fruit{// 定义一个水果接口
public void eat() ;// 吃水果
}
class Apple implements Fruit{
public void eat(){
System.out.println("** 吃苹果。") ;
}
};
class Orange implements Fruit{
public void eat(){
System.out.println("** 吃橘子。") ;
}
};
class Factory{// 定义工厂类
public static Fruit getInstance(String className){
Fruit f = null ;
if("apple".equals(className)){// 判断是否要的是苹果的子类
f = new Apple() ;
}
if("orange".equals(className)){// 判断是否要的是橘子的子类
f = new Orange() ;
}
return f ;
}
};
public class InterfaceCaseDemo05{
public static void main(String args[]){
Fruit f = Factory.getInstance(args[0]) ;// 实例化接口
if(f!=null){// 判断是否取得实例
f.eat() ;
}
}
};
[解决办法]
= = 。。汗。你工厂需要 返回的是一个Fruit的实例 。。就像是 ,你说把小明 叫下。。那最后过来的一定是小明这个人,而不是 一个写有小明名字的纸片。。
[解决办法]
Fruit f = Factory.getInstance(args[0]) ; // 实例化接口
因为要得到fruit实例,多看几遍多态的概念和操作
[解决办法]
工厂当然要返回创建的对象接口了..
不然要工厂何用