http://www.cnblogs.com/kelin1314/archive/2009/01/04/1368605.html
前提 所有产品共用一个接口
简单工厂 工厂中返回一个new的产品
如果产品种类增加了, 需要修改工厂的代码
工厂方法 工厂是一个接口, 下面有具体实现工厂
如果产品种类增加了, 接口不用修改,只需要增加实现工厂.
开闭原则,修改关闭, 扩展开放。
抽象工厂 如果产品分为多个接口,而这些产品又互相有联系
例如数据库间的切换
一个维度是实体对象(IUser, IDepartment)
一个维度是数据库实例对象(SqlserverUser, AccessUser, SqlserverDepartment, AccessDepartment)
抽象工厂(SqlFactory, AccessFactory)
缺点: 过于复杂,增加实体对象时需要修改很多类。
解决方法: 用简单工厂来代替抽象工厂, 并用反射,xml配置文件来取代switch if判断条件。
----
另外网上说到的用抽象工厂来处理DAO在不同数据库间的切换问题
但实际上可以用facade模式来实现类似功能
HPSC中用到了facade模式来设置调用外系统的接口
可以随时切换成开发环境,测试环境,生成环境
用spring的annotation来管理
@Service("sbsFacade")
public class SBSFacadeImpl implements ISBSFacade {
@Autowired
@Qualifier("customerOrgService")
private CustomerOrganizationService customerOrgService;
...
@Service 将这个类放在spring容器内管理,并定义个id
@Autowired
@Qualifier("customerOrgService") 从spring环境中将id为customerOrgService的bean注入到变量中
如果要切换成开发环境可以用
@Qualifier("customerOrgServiceMockData") 来切换
分享到:
相关推荐
4.简单工厂-工厂方法-抽象工厂 对比总结
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
本文章通俗易懂的对工厂模式进行了讲解,相信您看完这篇文章会对工厂模式有更深入的了解
设计模式之工厂方法、简单工厂、抽象工厂
NULL 博文链接:https://1193355343.iteye.com/blog/2370838
1、抽象工厂模式+反射技术 2、抽象工厂模式+简单工厂模式 3、仅仅是抽象工厂模式
通过抽象类中的抽象方法实现简单工厂模式。
从简单工厂,到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下...
c#工厂模式 简单工厂,抽象工厂,单件模式
NULL 博文链接:https://mrpengpengda.iteye.com/blog/1536290
这是代码,介绍请查看以下博客地址: http://www.cnblogs.com/homg/p/3548110.html代码乱码请使用utf-8编码。
工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类。也有把工厂方法模式划分到抽象工厂模式的,认为工厂方法是抽象工厂模式的特例的一种,就是只有一个要实现的产品接口。
设计模式中工厂相关模式有简单工厂、工厂方法、抽象工厂学习后的练习代码,C++编程语言。
c#工厂模式——简单工厂_抽象工厂实例
C++ 工厂模式 (简单工厂、工厂和抽象工厂)
通过C++实现了简单工厂模式、工厂模式、抽象工厂模式三大设计模式的经典案例。
* 在工厂方法的基础上,进一步抽象工厂类,将工厂抽象成两层,AbsFactory(抽象工厂) 和具体实现工厂子类。 * 调用者根据创建对象类型使用对应的工厂子类。 * 这样将单个的简单工厂类变成了工厂簇, 利于代码的维护...
本资源主要介绍工厂方法模式和抽象工厂模式。二者都与工厂相关,,但是其本质又大相径庭。这里先来简单介绍下二者的区别,以免混淆。 抽象工厂模式:提供一个接口,用于创建一系列相关的对象,而无需指定具体的类。...
用反射机制改进的抽象工厂