请大家讨论一下 简单工厂和工厂方法有什么区别啊这是简单工厂 楼下有没人将他改一下 变成工厂方法啊
package edu.scut.simplefactory;public interface IProduct {
public void produce();
}class ProductA implements IProduct{
public void produce(){
System.out.println("i am a productA!");
}
}class ProductB implements IProduct{
public void produce(){
System.out.println("i am a productB!");
}
}class SimpleFactory{

//注意 返回类型为抽象产品角色
public static IProduct creator(String s){
if("productA".equals(s)){
return new ProductA();
}
if("productB".equals(s)){
return new ProductB();
}
return null;
}
}class Client{
public static void main(String [] args){
SimpleFactory factory = new SimpleFactory();
ProductB client = (ProductB) factory.creator("productB");
client.produce();

}
}

解决方案 »

  1.   

    class SimpleFactory{  //注意 返回类型为抽象产品角色 
    public static IProduct creator(String s) throws ClassNotFoundException, InstantiationException, IllegalAccessException{ 
    // if("productA".equals(s)){ 
    // return new ProductA(); 
    // } 
    // if("productB".equals(s)){ 
    // return new ProductB(); 
    // } 
    // return null; 

    //这种也不错
    Class ab = Class.forName(s);
    return (IProduct)ab.newInstance();
    }
    }注意传递实参(s)的时候必须是已存在的类名。 SimpleFactory.creator("ProductA")
    注意大小写
      

  2.   

    ProductB client = (ProductB) factory.creator("productB"); 这个B另工厂的作用荡然无存.
      

  3.   


    哈哈 谢谢 是不是应该这样啊
    client = (ProductB) factory.creator("productB");
      

  4.   

    应该是 Product client = factory.creator("productB");
          client.produce();
    嘿嘿我是菜鸟,对工厂方法还在学习中。
      

  5.   

     #6楼 得分:0回复于:2009-09-03 22:04:36应该是 Product client = factory.creator("productB"); 
          client.produce(); 
    嘿嘿我是菜鸟,对工厂方法还在学习中。 
     
      

  6.   

    分确实比较少,但是分再少也得帮助楼主啊,学点知识都不容易。所谓工厂方法就是一个方法能生成多种类型的对象而已。这样:
    Father类型 变量 = 工厂方法();
      

  7.   

    是这样:
    IProduct client = (IProduct) factory.creator("productB");
      

  8.   

    应该说这样就可以了:
    IProduct client = factory.creator("productB");