C#中工厂模式的作用

1、比如,主要用于对扩展性有要求的功能。 以简单工厂为例:

接口Fun有三个实现 class FunA FunB FunC

工厂 class Fac {

public static Fun getFun(string name){

if(name == "A") {return new FunA();}

else if (name == "B"){return new FunB();}

else if (name == "C"){return new FunC();}

}

其他部分调用 Fun f = Fac.getFun(Configure.GetFunName()); 就可以用这样调用他。

Configure.GetFunName()这个可以从配置中获取类名。

而Fun的实现,则可以分装到dll中。 也就是说,在不改动原有工程的前提下,修改配置和添加dll,就可以无缝的添加新的功能。

这个多用于插件机制,各种容器(就是个工厂)之中。

2、比如,

比如说你的程序要访问数据库,但是你不知道要访问那种,或者支持多种,就可以把访问的具体方法都定义为接口,实例化的时候,根据不同的参数,通过工厂模式,实例化不同类型的数据访问类。