2013-02-18 93 views
0

看下面这个例子:http://www.codeproject.com/Articles/68670/The-Factory-Pattern工厂模式无法理解,为什么工厂

为什么我不能用实例化的思考具体对象像我展示波纹管,而不必创建一个工厂的额外的工作?

private Bat OrderBat(string choice) 
{ 
    Bat myBat = Reflection.NewObject(choice); 


    myBat.clean(); 
    myBat.applyGrip(); 
    myBat.applyLogo(); 
    myBat.applyCover(); 
    myBat.pack(); 

    return myBat; 
} 
+0

而反射类将如何创建基于'字符串选择'的对象?没错:通过实施工厂模式。 – jgauffin 2013-02-18 17:42:57

回答

2

1)choice串直接映射到一个Bat类名

2)所有Bat类有默认的无参数的构造函数,只能

想象,有一天一些新的Bat类有额外的参数,例如颜色:通过在工厂,你可以很容易地修改为创造新的蝙蝠代码没有去throught使用它的所有代码所有这些额外的代码

switch (choice) { 
    case "hardball-yellow": 
     myBat = new HardBallColoredBat(Color.YELLOW); 
     break; 

    case "hardball-white": 
     myBat = new HardBallColoredBat(Color.WHITE); 
     break; 

    case "softball": 
     myBat = new SoftBallBat(); 
     break; 
} 

+0

谢谢曼特里德。 – 2013-02-18 17:50:17