设计模式工厂模式1

上传人:公**** 文档编号:569809234 上传时间:2024-07-31 格式:PPT 页数:18 大小:505.50KB
返回 下载 相关 举报
设计模式工厂模式1_第1页
第1页 / 共18页
设计模式工厂模式1_第2页
第2页 / 共18页
设计模式工厂模式1_第3页
第3页 / 共18页
设计模式工厂模式1_第4页
第4页 / 共18页
设计模式工厂模式1_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《设计模式工厂模式1》由会员分享,可在线阅读,更多相关《设计模式工厂模式1(18页珍藏版)》请在金锄头文库上搜索。

1、设计模式设计模式-工厂模式工厂模式-1开开闭原原则对扩展开放对修改关闭扩展性稳定性简单工厂(SimpleFactory)提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。类UML图抽象产品具体产品2具体产品1工厂具体产品2具体产品1产品1实例产品2实例普通实例化简单工厂实例化简单工厂中的参与者参与者抽象产品工厂创建的所有产品的父类负责描述所有实例所共有的公共接口具体产品工厂创建的目标抽象产品的某个具体实例工厂实现创建所有实例的内部逻辑被外调用,创建需要的产品对象优缺点优点实现了客户端和具体实现类的解耦为系统结构提供了灵活的动态扩展机制缺点工

2、厂包含了所有的创建逻辑系统扩展困难,一旦添加新产品就不得不修改工厂逻辑(通过反射解决)不方便扩展子工厂。通常使用静态工厂方法,这使得无法由子类继承什么时候选择简单工厂要完全封装,隔离具体实现选用简单工厂,让客户端通过工厂来获取相应的接口,而无须关心具体的实现。为系统结构提供了灵活的动态扩展机制集中管理和控制对外创建对象的职责简单工厂可以创建很多的、不相关的对象,可以把对外创建对象的职责集中到一个简单工厂来,从而实现集中管理和控制。工厂方法(FactoryMethod)定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负

3、责具体工厂子类必须实现的接口。类UML图抽象产品具体产品2具体产品1抽象工厂具体工厂2具体工厂1工厂方法中的参与者参与者抽象产品所有产品的父类,描述所有实例所共有的公共接口具体产品工厂创建的目标,抽象产品的某个具体实例抽象工厂工厂方法模式的核心,任何在模式中创建的对象的工厂类必须实现这个接口具体工厂实现抽象工厂接口,实现创建所有实例的内部逻辑。被外调用,创建需要的产品对象优缺点优点克服了简单工厂模式违背开放封闭原则的缺点,又保持了封装对象创建过程的优点,为系统结构提供了灵活的动态扩展机制缺点每增加一个产品,就需要增加一个产品工厂的类,增加了额外的开发量什么时候选择工厂方法如果一个类需要创建某个

4、接口的对象,但是又不知道具体的实现,这种情况可以选用工厂方法模式,把创建对象的工作延迟到子类去实现如果一个类本身就希望,由它的子类来创建所需的对象的时候,应该使用工厂方法模式抽象工厂(AbstractFactory)当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。类UML图抽象产品1具体产品2具体产品1抽象工厂具体工厂2具体工厂1抽象产品2抽象工厂中的参与者参与者抽象产品多个有相关联系的产品的接口具体产品工厂创建的目标,抽象产品的某个具体实例抽象工厂工厂方法模式的核心,任何在模式中创建的对象的工厂类

5、必须实现这个接口具体工厂实现抽象工厂接口,实现创建所有实例的内部逻辑。被外调用,创建需要的产品对象优缺点优点分离了具体的类。使得易于交换产品系列有利于产品的一致性缺点难以扩展抽象工厂以生产新种类的产品。抽象工厂几口确定了可以被创建的产品集合,支持新种类的产品就需要扩展该工厂接口,这将涉及抽象工厂类及其所有子类的改变。什么时候选择抽象工厂一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。这个系统有多于一个的产品族,而系统只消费其中某一产品族。同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现End

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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