java设计模式3.建造者模式、原型模式

  • 建造者模式

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

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

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

  • 原型模式

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

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

对象复制

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

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

猜你喜欢

转载自www.cnblogs.com/shanhm1991/p/9898307.html