简单工厂、工厂方法、抽象工厂比较

上传人:豆浆 文档编号:31928568 上传时间:2018-02-09 格式:DOC 页数:3 大小:105KB
返回 下载 相关 举报
简单工厂、工厂方法、抽象工厂比较_第1页
第1页 / 共3页
简单工厂、工厂方法、抽象工厂比较_第2页
第2页 / 共3页
简单工厂、工厂方法、抽象工厂比较_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《简单工厂、工厂方法、抽象工厂比较》由会员分享,可在线阅读,更多相关《简单工厂、工厂方法、抽象工厂比较(3页珍藏版)》请在金锄头文库上搜索。

1、 这 三个模式主要的应用场景是:当创建单个(简单工厂、工厂方法)或多个(抽象工厂)系列对象,客户程序为了生成某个具体对象判断复杂,可能多处使用,并且在添加新的实现或新的系列时,需要过多改动已有的客户代码,为了解决这些问题,出现了这三种套路。(篇幅有限就不贴代码了)首先,简单工厂:在 简单工厂中(应对于生成单系列的对象),客户程序仅依赖于 Factory 和 Product 类,而不依赖于具体的实现类,CreateProduct 方法用于根据传入的参数,生成不同的对象,实际上就是将客户程序中对生成不同实现对象的重构,将创建对象的方法,封装到一个方法中,在这里我们封装成一个工厂类,将生成不同对象的

2、判断逻辑放到一个单独的类中。然后,是工厂方法,在简单工厂中,如果需要添加新的一种实现,那就要改过工厂类的方法,这样工厂类就违背了对修改关闭、对扩展开放的原则。在某些情况下,我们的框架无法修改具体创建的工厂类。例如,ADO.NET 数据访问程序,sql server 组件方式的实现与 my sql 组件的 实现,当 my sql 实现时,不可能要求 MS 为它加一个判断分支吧(当然这种情况是不存在的了),我们这里先将这个应用场景看成是单系列,那我们现有的解决方案是简单工厂,而简单工厂缺点是把生成对象判断的逻辑放在了组件中。当我们开的组件要求可以让第三方实现新的实现时,显然这种方式是不可取的。而工

3、厂方法可以解决这一问题 。工厂方法(Factory Method),定义一个用于创建对象的接口, 让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 最后,抽象工厂,还是上面 ADO.NET 数据访问组件的实现例子,在实现各种访问组件时,不可能只有一个类吧,最少也要大于 20 个类吧,对于这种多系列对象创建工作工厂方法显然不然正常的工作(如果每一个系列有 20 个类,那么就会有 20 个抽象类,N*20实现类,并且当一个系列中实现类有关系时)。抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。即当遇到需要创建多个系列,并且每一个系列中的类相互依赖时,可以考虑用抽象工厂。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号