建造者模式与原型模式/builder模式与prototype模式/创建型模式
建造者模式
定义
用于简化复杂对象的创建
JDK中的建造者模式
java.lang.StringBuilder中的append()方法,每次调用后返回修改后的对象本身。
public StringBuilder append(String str) {super.append(str);return this;}
//父类AbstractStringBuilder public AbstractStringBuilder append(String str) {if (str == null)return appendNull();int len = str.length();ensureCapacityInternal(count + len);str.getChars(0, len, value, count);count += len;return this;}
建造者模式和工厂模式的区别
建造者模式将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。
所以与工程模式的区别就是:工厂模式关注的是创建单个产品,而建造者模式则关注创建符合对象,多个部分。
因此,是选择工厂模式还是建造者模式,依实际情况而定。
原型模式
定义
原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,
对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。
在Java中,复制对象是通过clone()实现的,先创建一个原型类:
class Prototpye1 implements Cloneable{public Object clone() throws CloneNotSupportedException{Prototpye proto=(Prototpye)super.clone();return proto;}//浅复制//因为此处的重点是super.clone()这句话,super.clone()调用的是Object的clone()方法,而在Object类中,clone()是native的
}
深复制和浅复制
浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。
深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。`
class SerializableObject implements Serializable{private static final long serialVersionUID=1l; {}
}
public class Prototpye implements Cloneable,Serializable{private static final long serialVersionUID=1L;private String string;private SerializableObject obj;//浅复制.利用Object的clone()方法public Object clone()throws CloneNotSupportedException {Prototpye proto=(Prototpye)super.clone();return proto; }//要实现深复制,需要采用流的形式读入当前对象的二进制输入,再写出二进制数据对应的对象。public Object deepClone()throws IOException ,ClassNotFoundException{ByteArrayOutputStream bos=new ByteArrayOutputStream();ObjectOutputStream oos=new ObjectOutputStream(bos);oos.writeObject(this);ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray());ObjectInputStream ois=new ObjectInputStream(bis);return ois.readObject();}public String getString() {return string;}public void setString(String str) {this.string=str;}public SerializableObject getObj() {return obj;}
}
转载于:https://www.cnblogs.com/lknny/p/4853581.html
建造者模式与原型模式/builder模式与prototype模式/创建型模式相关推荐
- Builder(生成器)--对象创建型模式
Builder(生成器)–对象创建型模式 一.意图 将一个复杂的对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 二.动机 1.在软件系统中,有时候面临着"一个复杂对象&quo ...
- 设计模式之创建型模式(工厂、原型、建造者)
文章目录 创建型模式 2.1 工厂设计模式 2.1.1 简单工厂模式 2.1.2 工厂方法模式 2.1.3 抽象工厂 2.1.4 工厂模式总结 2.1.5 Spring中的工厂模式 2.1.6 工作中 ...
- 【设计模式】三大类:创建型模式、结构型模式、行为型模式
1 创建型模式 本人理解:以C++为例,创建对象时,用关键字new来创建(实例化)对象.用一个函数或类将new的过程封装起来,就是创建型模式. <设计模式>中的描述: 创建型模式抽象了实例 ...
- java创建型_Java创建型模式
Java创建型模式 在软件工程中,创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象.基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度.创建型模式通过以某种方式控制 ...
- 软件设计与体系结构——创建型模式
如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔的个人空间 创建型模式: 创建型模式抽象了实例化过程 帮助系统独立于如何创建.组合和表示对象 一个类创建型模式使用继承改变被实例化的类 类创建型 ...
- 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)
本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...
- 创建型模式——抽象工厂模式
一. 实验目的与要求 1.练习使用工厂模式.设计相关的模拟场景并进行实施,验证模式特性,掌握其优缺点. 2.实验结束后,对相关内容进行总结. 二.实验内容 1.模式应用场景说明 手机CPU生产工厂:在 ...
- 软件架构设计师-创建型模式-单例模式-原型模式-工厂方法模式-抽象工厂模式-建造者模式
文章目录 1.单例模式 2.原型模式 3.工厂方法(Factory Method)模式 4.抽象工厂(AbstractFactory)模式 5.建造者(Builder)模式 6.作者答疑 在面向对 ...
- 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图
本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...
- 《设计模式详解》创建型模式 - 建造者模式
建造者模式 4.4 建造者模式 4.4.1 概述 4.4.2 结构 4.4.3 实例 4.4.4 优缺点 4.4.5 使用场景 4.4.6 扩展 - 构建对象 重构前 重构后 4.5 创建型模式对比 ...
最新文章
- c++ ofstream使用方法
- mysql embed_html中object和embed标签的区别
- 假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料???
- SAP UI5 Opportunity popup
- python人工智能_人工智能福利丨Python核心语法实战
- 2010.11.13信息系统项目管理师考试下午试题答题思路剖析
- 实现Ajax异步交互
- 恢复误删的Windows文件
- const C++ 用法总结
- Windows8中离线安装.Net 3.5的方法
- 【bzoj4653】[Noi2016]区间 双指针法+线段树
- MySQL数据表查询操作
- rust go对比选择
- 巴斯勒相机的相机控制类析构函数多次调用的问题
- 从零开始的LC刷题(56): Power of Two
- ftp客户端安装,六款可以安装的ftp客户端
- 文件操作——getc()和putc()函数
- 【阿里云总监课】存储系统设计——NVMe SSD性能影响因素一探究竟
- SAP 发票凭证反向冲销
- 百家号素材审核规范说明