04工厂模式.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
工厂模式 刘 伟 weiliu_china@126.com 内 容 创建型模式 简单工厂模式 工厂方法模式 抽象工厂模式 抽象工厂模式(续) 参与者 AbstractFactory:抽象工厂 ConcreteFactory:具体工厂 AbstractProduct:抽象产品 Product:具体产品 Client:客户类 抽象工厂模式(续) 模式解释 抽象工厂模式(续) 模式解释 抽象工厂模式(续) 模式解释 抽象工厂模式(续) 实例分析 实例:汽车配件工厂 抽象工厂模式(续) 实例分析 实例:汽车配件工厂(代码实现) 源代码 抽象工厂模式(续) 模式优缺点 抽象工厂模式的主要优点是隔离了具体类的生成,使得客户并不需要知道什么被创建。由于这种隔离,更换一个具体工厂就变得相对容易。所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。另外,应用抽象工厂模式可以实现高内聚低耦合的设计目的,因此抽象工厂模式得到了广泛的应用。 抽象工厂模式(续) 模式优缺点 抽象工厂模式的缺点是在添加新的产品对象时,难以扩展抽象工厂以便生产新种类的产品,这是因为在抽象工厂角色中规定了所有可能被创建的产品集合,要支持新种类的产品就意味着要对该接口进行扩展,而这将涉及到对抽象工厂角色及其所有子类的修改,显然会带来些许的不便。 抽象工厂模式(续) 模式使用 在以下情况下可以使用抽象工厂模式: 一个系统不应当依赖于产品类实例如何被创建、 组合和表达的细节,这对于所有形态的工厂模式都是重要的。 这个系统有多于一个的产品族,而系统只消费其中某一产品族。 同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。 * * 创建型模式 创建型模式 (Creational Pattern) 对类的实例化过程进行了抽象,能够使软件模块做到与对象的创建和组织无关。为了使软件的结构更加清晰,外界对于这些对象只知道它们共同的接口,而不清楚其具体的实现细节。正因为如此,创建模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建模式隐藏了类的实例是如何被创建的,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。 创建型模式(续) 创建型模式: 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 原型模式(Prototype) 单例模式(Singleton) 建造者模式(Builder) 简单工厂模式 模式动机 考虑一个简单的场景,一个软件系统可以提供多个外观不同的按钮,这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,我们就可以使用简单工厂模式。 简单工厂模式(续) 模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通过它根据自变量的不同返回不同的类的实例。简单工厂模式专门定义一个类来负责创建其它类的实例,被创建的实例通常都具有共同的父类。 简单工厂模式(续) 模式结构 简单工厂模式(续) 参与者 Factory:工厂角色 Product:抽象产品角色 ConcreteProduct:具体产品角色 简单工厂模式(续) 实例分析 实例:女娲造人 简单工厂模式(续) 实例分析 实例:女娲造人(代码实现) 源代码 简单工厂模式(续) 模式优缺点 简单工厂模式的优点如下: 工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品。简单工厂模式通过这种做法实现了对责任的分割。 简单工厂模式(续) 模式优缺点 其缺点如下: 当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的缺点。因为工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。 系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,有可能造成工厂逻辑过于复杂。 简单工厂模式通常使用静态工厂方法,这使得无法由子类继承,造成工厂角色无法形成基于继承的等级结构。 简单工厂模式(续) 模式使用 在以下情

文档评论(0)

jsntrgzxy01 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档