




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
原型模式 单例模式与建造者模式 刘伟weiliu china 内容 原型模式单例模式建造者模式 原型模式 模式动机有些对象的创建过程较为复杂 而且有时候需要频繁创建 原型模式通过给出一个原型对象来指明所要创建的对象的类型 然后用复制这个原型对象的办法创建出更多同类型的对象 这就是原型模式的用意 原型模式 续 模式定义原型模式 PrototypePattern 它是一种对象创建型模式 用原型实例指定创建对象的种类 并且通过拷贝这些原型创建新的对象 原型模式允许一个对象再创建另外一个可定制的对象 无需知道任何创建的细节 工作原理是 通过将一个原型对象传给那个要发动创建的对象 这个要发动创建的对象通过请求原型对象拷贝原型自己来实现创建过程 原型模式 续 模式结构 原型模式 续 参与者Prototype 抽象原型类ConcretePrototype 具体原型类Client 客户 原型模式 续 模式解释所有的Java类都继承自java lang Object 而Object类提供一个clone 方法 可以将一个Java对象复制一份 但是 这个Java类必须实现一个标识接口Cloneable 标识这个Java类支持复制 原型模式 续 模式解释深克隆与浅克隆在浅克隆中 被复制对象的所有变量都具有与原来的对象相同的值 而所有的对其它对象的引用仍然指向原来的对象 换言之 浅克隆仅仅复制所考虑的对象 而不复制它所引用的对象 也就是其中的成员对象并不复制 在浅克隆中 当对象被复制时它所包含的成员对象却没有被复制 原型模式 续 模式解释深克隆与浅克隆 原型模式 续 实例分析实例一 孙悟空变身 浅克隆 原型模式 续 实例分析实例一 孙悟空变身 浅克隆 代码实现 原型模式 续 实例分析实例二 孙悟空变身 深克隆 代码实现 原型模式 续 模式优缺点原型模式的优点包括 原型模式允许动态增加或减少产品类 原型模式提供了简化的创建结构 原型模式具有给一个应用软件动态加载新功能的能力 产品类不需要非得有任何事先确定的等级结构 原型模式 续 模式优缺点原型模式的缺点有 原型模式的最主要缺点就是每一个类必须配备一个克隆方法 而且这个克隆方法需要对类的功能进行通盘考虑 这对全新的类来说不是很难 但对已有的类进行改造时 不一定是件容易的事 原型模式的另一个缺点是在实现深克隆时需要编写较为复杂的代码 原型模式 续 模式使用在下面的情况下可以使用原型模式 类的实例化是动态的 需要避免使用分层次的工厂类来创建分层次的对象 类的实例对象只有一个或很少的几个组合状态 原型模式 续 模式应用原型模式在很多软件都可以找到它的应用 如果实例化一个类要花大量时间 原型模式是最好的解决方案 Word可以采用Copy Paste生成多个笑脸对象 采用的极有可能就是原型模式 原型模式 续 模式深入带原型管理器的原型模式 练习 原型模式中有哪些参与者 简述其职责 设计一个颜色管理器首先在一个原型管理器 ColorManager 创建了各种颜色 并将其保存在一个哈希表 Hashtable 中 当客户需要时 就返回一个颜色的克隆 现用原型模式实现该场景并绘制相应的类图 单例模式 模式动机对于系统中的某些类来说 只有一个实例很重要 例如 虽然系统中可以有许多打印机 但是只能有一个打印机正在工作 一个系统只能有一个窗口管理器 我们怎样保证一个类只有一个实例并且这个实例易于被访问呢 一个全局变量使得对象可以被访问 但它不能防止我们实例化多个对象 一个更好的解决办法是 让类自身负责保存它的唯一实例 这个类可以保证没有其它实例被创建 并且它可以提供一个访问该实例的方法 这就是单例模式 SingletonPattern 单例模式 续 模式定义单例模式 SingletonPattern 单例模式确保某一个类只有一个实例 而且自行实例化并向整个系统提供这个实例 这个类称为单例类 它提供全局访问的方法 单例模式的要点有三个 一是某个类只能有一个实例 二是它必须自行创建这个实例 三是它必须自行向整个系统提供这个实例 单例模式是一种对象创建型模式 单例模式 续 模式结构 单例模式 续 参与者Singleton 单例 单例模式 续 实例分析实例 打印池的实现 单例模式 续 实例分析实例 打印池的实现 代码实现 单例模式 续 模式优缺点单例模式的主要优点如下 提供了对唯一实例的受控访问 缩小命名空间 允许对操作和表示的精化 允许可变数目的实例 单例模式 续 模式使用在以下情况下可以使用单例模式 系统只需要一个实例对象 客户调用类的单个实例只允许使用一个公共访问点 单例模式 续 模式应用java lang Runtime类java awt Toolkit类数据库主键编号分配HibernateSessionFactory 单例模式 续 模式深入饿汉式单例类 单例模式 续 模式深入懒汉式单例类 练习 分析并理解EagerSingleton和LazySingleton的异同 某公司只购买一个JDBC驱动软件的使用许可 能否使用单例模式管理通过JDBC驱动软件连接的数据库 建造者模式 模式动机有些情况下 一个对象会有一些重要的性质 在它们没有恰当的值之前 对象不能作为一个完整的产品使用 比如 一个电子邮件有发件人地址 收件人地址 主题 内容 附录等部分 而在最起码的收件人地址未被赋值之前 这个电子邮件不能发出 有些情况下 一个对象的一些性质必须按照某个顺序赋值才有意义 在某个性质没有赋值之前 另一个性质则无法赋值 这些情况使得性质本身的建造涉及到复杂的商业逻辑 这时候 此对象相当于一个有待建造的产品 而对象的这些性质相当于产品的零件 建造产品的过程就是组合零件的过程 由于组合零件的过程很复杂 因此 这些 零件 的组合过程往往被 外部化 到一个称作建造者的对象里 建造者返还给客户端的是一个全部零件都建造完毕的产品对象 建造者模式 续 模式定义建造者模式 BuilderPattern 将一个复杂对象的构建与它的表示分离 使得同样的构建构成可以创建不同的表示 建造者模式是一步一步创建一个复杂的对象 它允许用户只通过指定复杂对象的类型和内容就可以构建它们 用户不需要知道内部的具体构建细节 建造者模式属于对象创建型模式 建造者模式 续 模式结构 建造者模式 续 参与者Builder 抽象建造者ConcreteBuilder 具体建造者Director 指挥者Product 产品角色 建造者模式 续 代码分析实例 汽车组装车间 组装电脑 05 06Builder AbstractFactory java 建造者模式 续 实例分析实例一 车间造车 建造者模式 续 实例分析实例一 车间造车 代码实现 建造者模式 续 模式优缺点使用建造者模式主要有以下效果 建造模式的使用使得产品的内部表象可以独立的变化 使用建造者模式可以使客户端不必知道产品内部组成的细节 每一个Builder都相对独立 而与其它的Builder无关 模式所建造的最终产品更易于控制 建造者模式 续 模式使用以下情况应当使用建造者模式 需要生成的产品对象有复杂的内部结构 需要生成的产品对象的属性相互依赖 建造者模式可以强迫生成顺序 在对象创建过程中会使用到系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年法律硕士经典例题含完整答案详解(夺冠)
- 浦发银行合肥市包河区2025秋招数据分析师笔试题及答案
- 民生银行济宁市任城区2025秋招笔试热点题型专练及答案
- 检测员考试题目及答案
- 监理考试题目及答案详解
- 民生银行北京市西城区2025秋招小语种岗笔试题及答案
- 农发行黄山市黄山区2025秋招英文面试题库及高分回答
- 深圳市2025年3月广东深圳市大鹏新区建筑工务署招聘编外人员7人笔试历年参考题库附带答案详解
- 偶像明星成长启示录心理剧故事剖析
- 传染病重大误封假信息统计
- 高血压病基层诊疗指南
- 医院视频监控系统维保方案
- 门诊护士课件教学课件
- 《大学生的人际关系》课件
- 职务侵占罪培训
- 中式烹调师技能等级认定四级理论知识试卷
- DB65-T 4784-2024 冰川范围调查技术规范
- 幼儿园礼仪小天使《借物品》教学课件
- 年产四万吨聚脂长丝工厂设计说明书
- 四年级教材《劳动》课件
- 《电动汽车充电设备检验试验规范 第1部分:非车载充电机》
评论
0/150
提交评论