java设计模式3.建造者模式原型模式
Posted shanhm1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java设计模式3.建造者模式原型模式相关的知识,希望对你有一定的参考价值。
- 建造者模式
一个产品常有不同的组成部分作为产品的零件,有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用,有些时候,一个对象的一些性质必须按照某个顺序赋值才有意义。建造者模式利用一个导演者对象和具体建造者对象,按步骤建造出所有零件,从而建造出完整的产品对象。建造者模式产品的结构的过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造零件的责任分割开来,达到责任划分和封装的目的。
- 抽象建造者角色:给出一个抽象接口,以规范产品对象的各个组成部分的建造。通常此接口独立于应用的业务逻辑。
- 具体建造者角色:与应用程序紧密相关的一些类,它们在应用程序调用下创建产品实例。
- 导演者角色:负责调用具体建造者创建产品对象,导演者并没有产品类的具体知识,真正拥有产品类具体知识的是具体建造者角色。
- 产品角色:建造的对象。
导演者角色是与客户端打交道的角色。导演者将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者角色。具体建造者进行建造工作,但是不为客户端感知。
- 原型模式
通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。
- 客户角色:客户类提出创建对象的请求。
- 抽象原型角色:给出具体原型类需要的所有接口。
- 具体原型角色:被复制的对象。
对象复制
- 浅复制:被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。
- 深复制:被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用指向被复制过的新对象,但是深复制深入到多少层,是一个不易确定的问题。利用序列化可以实现深复制:即把对象写到流里,然后再把对象从流里读出来即实现一个对象的拷贝,而原来对象仍然存在于JVM中。
#笔记内容参考《java与模式》
以上是关于java设计模式3.建造者模式原型模式的主要内容,如果未能解决你的问题,请参考以下文章
chatGPT教你设计模式[3] ——创建型模式(单例模式建造者模式和原型模式)
chatGPT教你设计模式[3] ——创建型模式(单例模式建造者模式和原型模式)