设计模式讲义.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Related patterns Singleton与其他创建型模式并不矛盾,可以用Singleton来实现其他模式中的对象。包括Abstract Factory、Builder、Prototype等。 多个实例对于构造过程往往并无意义,所以在许多情况下Singleton模式比较符合应用背景 思考题:多例模式如何实现? * * 增加:Monostate [BALL2000] Intent 另外一种获取对象单一性的方法 Motivation 无论创建了多少Monostate的实例,它们都表现得像一个对象一样,甚至把当前的所有实例都销毁或者解除职责,也不会丢失数据。 Solution/Implementation 将所有变量都设置为静态的 * * Example public class Monostate{ private static int itsX=0; public Monostate(){} public void setX(int x){ itsX = x;} public int getX() {return itsX;} } * * Sample Code Consequences 优点 透明性:使用Monostate对象和使用常规对象没有什么区别,使用者不需要知道对象是monostate 可派生性:派生类都是Monostate 多态性:由于方法不是静态的,所以可以在派生类中override。因此不同的派生类可以基于同样的静态变量表现出不同的行为 缺点 不可转换性:不能透过派生把常规类转换成Monostate类 内存占用:即使从未使用Monostate,它的变量也要占用内存空间 * * Related Patterns Singleton模式使用时由构造函数,一个静态变量,以及一个静态方法对实例化进行控制和限制 Monostate模式只是简单地把对象的所有变量变成静态的。 如果希望透过派生去约束一个现存类,并且不介意它的调用者都必须调用instance()方法来获取访问权,那么Singleton是最合适的。 如果希望类的单一性本质对使用者透明,或者希望使用单一对象的多态派生对象,那么Monostate是最适合的。 * * Summary:Creational Patterns Factory Method 本质:用一个virtual method完成创建过程 Abstract Factory 一个product族的factory method构成了一个factory接口 Prototype 通过product原型来构造product,Clone + prototype manager Builder 通过一个构造算法和builder接口把构造过程与客户隔离开 Singleton 单实例类型。由构造函数,一个静态变量,以及一个静态方法对实例化进行控制和限制 * * * Summary:Creational Patterns 创建型模式抽象了实例化的过程 类创建模式使用继承改变被实例化的类 对象创建模式将实例化委派给其它对象 创建型模式中不断出现的主题 封装了系统所使用的具体类的信息 隐藏了如何创建和组成这些具体类的实例 了解每一种模式的实质 具体实现的时候可能会有变化情况,或者扩展,或者退化 * * * Summary:Creational Patterns Factory Method是基础,Abstract Factory是它的扩展 Factory Method、Abstract Factory、Prototype都涉及到类层次结构中对象的创建过程,有所取舍 Prototype需要Prototype Manager Factory Method需要依附一个Creator类 Abstract Factory需要一个平行的类层次 根据应用的其他需求,以及语言提供的便利来决定使用哪种模式 * * Summary:Creational Patterns Builder往往适合于特定的结构需要,它所针对的product比较复杂 Singleton有比较强烈的物理意义,可以用在许多细微的地方,不一定与类层次关联 这些patterns都很常见,有时需要结合两种或者多种模式完成系统中对象的构造过程 * * * 作业 Factory Method模式和Abstract Factory模式的区别在哪?一般哪些情况下适合用前者,哪些情况下适合用后者? 解释Java中clone()方法和java.lang.Cloneable接口的关系,如果想要实现深拷贝可以有哪些方法? java.lang.Math类和java.lang.StrictMath类是否是单例

文档评论(0)

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

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

1亿VIP精品文档

相关文档