纵横谈23种面向对象的设计模式--创建型讲解.docx

纵横谈23种面向对象的设计模式--创建型讲解.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
纵横谈23种面向对象的设计模式--创建型讲解

工厂方法模式:提供一个简单的决策类,根据条件生成产品。 抽象工厂模式:提供一个创建并返回一系列产品的接口。 单件模式:某个类只能有一个实例。提供一个全局访问点。(可拓展到有限个实例) 生成器模式:将一个复杂对象的构建于呈现分开,以便根据不同需要创建不同的形式。 原型模式:先实例化一个类,然后克隆或者拷贝该类来构建新的实例。可以用共有方法进一步修改这些实例。 难点: 生成器模式关注于将构造对象的过程和构造的各个部分分开,而抽象工厂关注于构建一个产品系列。实际上,最大的区别是生成器模式创建的产品不一定有共同的父类,只要有类似的构造过程即可。实际上我们常见到的文件资源管理器的实现完全可以使用生成器模式。 简单工厂、工厂模式与生成器模式对比:工厂模式变化点在于新增对象(客户在需要创建新对象的时候,只需要新建一个工厂去继承工厂父类就可以了),而生成器模式在于构建复杂对象的表示(客户在需要创建这个复杂对象的时候,只需要给指导者一个具体的创建者就可以了),变化点完全不同,那么其应用场景自然不同。如果非要霸王硬上弓的用,那么就需要改动模式构建,例如,生成器模式若要完成新增对象的功能,那么它就可能产生两个不同的builder基类。这是完全不推荐的。那简单工厂属于静态工厂,根据传入参数决定需要创建哪种对象,它的扩展性也不好。 Prototype模式同工厂模式,同样对客户隐藏了对象的创建工作,但是,与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过拷贝一个现有对象生成新对象的,达到了隔离类对象的使用者和具体类型(易变类)之间的耦合关系的目的。此外引入Prototype模式后不再需要一个与具体产品等级结构平行的工厂方法类,减少了类的构造。 总之,根据不同的应用场景(即不同的变化),选择合适的模式才是王道。什么叫合适,即变化都可以像配件那样直接装配到系统中,无须改动系统其它部分,系统会自动检测到新增配件,并通过客户程序或者配置文件进行选择。 简单工厂模式:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 意图:提供一个类,由它负责根据一定的条件创建某一具体类的实例 角色及其职责: ? 工厂(Creator)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 ? 抽象(Product)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 ? 具体产品(Concrete Product)角色:简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。一般来讲它是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。 模式的特点: ? 优点:简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。 ? 缺点:体现在其工厂类上,由于工厂类集中了所有实例的创建逻辑,所以高内聚方面做的并不好。另外,当系统中的具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不很好。 ? 工厂方法模式: 工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作推延到其子类去完成。 意图:定义一个用户创建对象的接口,让子类决定实例化哪一个类,工厂方法模式使一个类的实例化延迟到其子类。 优点:实现了开闭原则,可以在不改变工厂的前提下增加新产品。 实现要点: ? Factory Method模式的两种情况:一是Creator类是一个抽象类且它不提供它所声明的工厂方法的实现;二是Creator是一个具体的类且它提供一个工厂方法的缺省实现。 ? 工厂方法是可以带参数的。 ? 工厂的作用并不仅仅只是创建一个对象,它还可以做对象的初始化,参数的设置等。 效果: ? 用工厂方法在一个类的内部创建对象通常比直接创建对象更灵活。 ? Factory Method模式通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。 适用性: ? 当一个类不知道它所必须创建的对象的类的时候。 ? 当一个类希望由它的子类来指定它

文档评论(0)

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

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

1亿VIP精品文档

相关文档