工厂模式 - Factory

简单工厂模式

 SimpleFactory Pattern,将一个具体类的实例化交给一个静态工厂方法来执行。

特点

  • 增加功能需要修改工厂类,扩展性较差;

参考

工厂方法模式

 FactoryMethod Pattern,定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类。

特点

  • 增加功能需要修改客户端;
  • 多态,业务逻辑与数据访问解耦合;

参考

抽象工厂模式

 AbstractFactory Pattern,定义一个创建一系列相关或相互依赖的对象的接口,而无需指定它们具体的类。

优点

  • 易于交换产品系列;
  • 实例创建过程与客户端分离,客户端通过抽象接口操纵实例;
  • 抽象工厂可以将一群相关的产品集合起来;     

缺点

  • 易于增加工厂类,但增加功能(表类,即产品系列)会导致大批量改动;

改进

  • 利用简单工厂模式改进:易于增加表类,不易增加工厂类  
  • 反射 + 抽象工厂:易于增加工厂类和表类
using System.Reflection;      
Assembly.Load(“程序集名称”).CreateInstance(“命名空间.类名称”); 

 优点:通过字符串变量,将程序由编译时转为运行时,可以去除switch判断。  

  • 反射  + 配置文件
using System.Configuration;
   

 优点:具体实现中引入配置文件可以使得用户在不修改任何客户端代码的前提下增加或替换子类。

总结

  •  所有应用简单工厂的地方,可考虑利用反射技术去除switch和if,解除分支判断带来的耦合;

参考

 

posted @ 2016-10-20 23:02  万箭穿心,习惯就好。  阅读(196)  评论(0编辑  收藏  举报