设计模式--工厂模式.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式—工厂模式2012.02张云波开-闭原则对扩展开放对修改关闭 扩展性稳定性简单工厂( Simple Factory)提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。类UML图简单工厂实例化普通实例化具体产品1工厂具体产品1产品1实例抽象产品具体产品2产品2实例具体产品2简单工厂中的参与者抽象产品工厂创建的所有产品的父类负责描述所有实例所共有的公共接口具体产品工厂创建的目标抽象产品的某个具体实例工厂实现创建所有实例的内部逻辑被外调用,创建需要的产品对象优缺点优点实现了客户端和具体实现类的解耦为系统结构提供了灵活的动态扩展机制缺点工厂包含了所有的创建逻辑系统扩展困难,一旦添加新产品就不得不修改工厂逻辑(通过反射解决)不方便扩展子工厂。通常使用静态工厂方法,这使得无法由子类继承什么时候选择简单工厂要完全封装,隔离具体实现选用简单工厂,让客户端通过工厂来获取相应的接口,而无须关心具体的实现。为系统结构提供了灵活的动态扩展机制集中管理和控制对外创建对象的职责简单工厂可以创建很多的、不相关的对象,可以把对外创建对象的职责集中到一个简单工厂来,从而实现集中管理和控制。工厂方法(Factory Method )定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口。类UML图抽象产品抽象工厂具体产品2具体工厂2具体产品1具体工厂1工厂方法中的参与者抽象产品所有产品的父类,描述所有实例所共有的公共接口具体产品工厂创建的目标,抽象产品的某个具体实例抽象工厂工厂方法模式的核心,任何在模式中创建的对象的工厂类必须实现这个接口具体工厂实现抽象工厂接口,实现创建所有实例的内部逻辑。被外调用,创建需要的产品对象优缺点优点克服了简单工厂模式违背开放—封闭原则的缺点,又保持了封装对象创建过程的优点,为系统结构提供了灵活的动态扩展机制缺点每增加一个产品,就需要增加一个产品工厂的类,增加了额外的开发量什么时候选择工厂方法?如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况可以选用工厂方法模式,把创建对象的工作延迟到子类去实现如果一个类本身就希望,由它的子类来创建所需的对象的时候,应该使用工厂方法模式抽象工厂(Abstract Factory)当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。类UML图抽象工厂抽象产品1抽象产品2具体产品2具体工厂2具体产品1具体工厂1抽象工厂中的参与者抽象产品多个有相关联系的产品的接口具体产品工厂创建的目标,抽象产品的某个具体实例抽象工厂工厂方法模式的核心,任何在模式中创建的对象的工厂类必须实现这个接口具体工厂实现抽象工厂接口,实现创建所有实例的内部逻辑。被外调用,创建需要的产品对象优缺点优点分离了具体的类。使得易于交换产品系列有利于产品的一致性缺点难以扩展抽象工厂以生产新种类的产品。 抽象工厂几口确定了可以被创建的产品集合,支持新种类的产品就需要扩展该工厂接口,这将涉及抽象工厂类及其所有子类的改变。什么时候选择抽象工厂?一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。?这个系统有多于一个的产品族,而系统只消费其中某一产品族。?同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现 End

文档评论(0)

jsntrgzxy01 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档