抽象工厂模式

 

User.cs





IUser.cs





SqlserverUser.cs





AccessUser.cs





Department.cs





IDepartment.cs

 

SqlserverDepartment.cs

 

AccessDepartment.cs

 

IFactory.cs

 

SqlserverFactory.cs

 

AccessFactory.cs

 

Client.cs

 

小结:

  • 本例分析:只有一个User类和User操作类时,是只需要工厂模式的,但现在加入新表,而且SQL Server与Access又是两大不同的分类,所以解决这种涉及多个产品系列的问题,用到了抽象工厂模式。
  • 优点:最大的好处是易于交换产品系列,由于具体工厂类,如IFactory factory=new AccessFactory(),在一个应用中只需要在初始化时出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置;第二大好处是,它让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。
  • 缺点:比如我们要增加项目表Project,至少要增加三个类,IProject、SqlserverProject、AccessProject,还需要更改IFactory、SqlserverFactory和AccessFactory才可以完全实现;另外,客户端程序类不只一个时,很多地方都在用IUser或IDepartment,每一个类在开始都会声明IFactory factory=new SqlserverFactory(),如果我有100个调用数据库的类,就要更改100次IFactory factory=new SqlserverFactory()。[此种情况时可以考虑用简单工厂模式+抽象工厂模式进行,随后也可以再过渡到反射+抽象工厂模式(反射+配置文件)]。
posted @ 2008-10-13 13:30  笑谈  阅读(312)  评论(0编辑  收藏  举报