• 建造者模式

一个产品常有不同的组成部分作为产品的零件,有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用,有些时候,一个对象的一些性质必须按照某个顺序赋值才有意义。建造者模式利用一个导演者对象和具体建造者对象,按步骤建造出所有零件,从而建造出完整的产品对象。建造者模式产品的结构的过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造零件的责任分割开来,达到责任划分和封装的目的。

  • 抽象建造者角色:给出一个抽象接口,以规范产品对象的各个组成部分的建造。通常此接口独立于应用的业务逻辑。
  • 具体建造者角色:与应用程序紧密相关的一些类,它们在应用程序调用下创建产品实例。
  • 导演者角色:负责调用具体建造者创建产品对象,导演者并没有产品类的具体知识,真正拥有产品类具体知识的是具体建造者角色。
  • 产品角色:建造的对象。

导演者角色是与客户端打交道的角色。导演者将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者角色。具体建造者进行建造工作,但是不为客户端感知。

  • 原型模式

通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。

  • 客户角色:客户类提出创建对象的请求。
  • 抽象原型角色:给出具体原型类需要的所有接口。
  • 具体原型角色:被复制的对象。

对象复制

  1. 浅复制:被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。
  2. 深复制:被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用指向被复制过的新对象,但是深复制深入到多少层,是一个不易确定的问题。利用序列化可以实现深复制:即把对象写到流里,然后再把对象从流里读出来即实现一个对象的拷贝,而原来对象仍然存在于JVM中。

#笔记内容参考《java与模式》

最新文章

  1. js实现无限极分类
  2. OC ---- 字符串 数组 iOS学习-----细碎知识点总结
  3. ios中自定义cell 设置cell的分组结构
  4. canvas知识点
  5. 把文件打成zip或然rar下载 (详询请加qq:2085920154)
  6. 夺命雷公狗—angularjs—12—get参数的接收
  7. poj 1386 Play on Words 有向欧拉回路
  8. js function定义函数的4种方法
  9. document.getElementById的简便方式
  10. 【转】ibatis的简介与初步搭建应用
  11. VC2010 Working Directory
  12. NYOJ-47 过河问题(贪心)
  13. 转-python中的闭包
  14. 解决百度上传WebUploader在IE浏览器下点击无反应的问题
  15. APM飞控学习之路的资料
  16. java线程学习之wait方法
  17. C# SHA256加密算法记录
  18. Java 之外,是 Scala 还是 Groovy?【转载】
  19. October 30th, 2017 Week 44th Monday
  20. 请求被中止: 未能创建 SSL/TLS 安全通道,设置 TLSv1.2和TLSv1.1版本 .基础链接已经关闭,发送时发生错误

热门文章

  1. AbstractCollection
  2. Go slice:切片的“陷阱”和本质
  3. Android:JNI与NDK(三)NDK构建的脚本文件配置
  4. Unity经典游戏教程之:弓之骑士
  5. caddy & grpc(3) 为 caddy 添加一个 反向代理插件
  6. alluxio源码解析-rpc调用概述(1)
  7. Spring项目集成ShiroFilter简单实现权限管理
  8. 简易数据分析 10 | Web Scraper 翻页——抓取「滚动加载」类型网页
  9. C#串口类封装 SuperSerialPort
  10. python(自用手册)导图