日期:2014-05-20  浏览次数:20587 次

求教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实例,多看几遍多态的概念和操作
------解决方案--------------------
工厂当然要返回创建的对象接口了..
不然要工厂何用