设计模式之原型模式(创建型)
Posted 思想累积
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之原型模式(创建型)相关的知识,希望对你有一定的参考价值。
1、简介
定义:
如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段相同),这种情况下,我们可以利用已有对象(原型)进行复制(或者叫拷贝)的方式,创建一个或多个相同或相似的对象,以达到节省资源的目的,这种基于原型来创建对象的方式就叫做原型模式。用这种方式创建对象也不用知道对象创建的细节,比较高效。
功能:
- 通过克隆来创建新的对象实例
- 为克隆出来的对象实例复制原型实例属性的值
本质:
通过克隆来创建新的对象实例
2、组成结构
Java 提供了对象的 clone() 方法,使用 Java 实现原型模式还是比较简单的
原型模式包含以下角色
- Prototype 抽象原型类:声明了一个克隆自身的接口,约束想要克隆自己的类
- Realizetype 具体原型类:实现 Prototype 接口的类,它是可以被复制的对象,实现了克隆自身的功能
- 访问类:首先获取到原型实例对象,然后通过原型实例克隆自身来创建新的对象实例
原型模式有两种实现方法,深拷贝和浅拷贝。
- 浅拷贝:只复制对象中基本数据类型数据和引用对象的内存地址,不会递归地复制引用对象,以及引用对象的引用对象
- 深拷贝:得到的是一份完完全全独立的对象。
简单实现:
// 声明一个抽象原型类,克隆自身的接口
public interface Prototype
public Prototype clone();
// 具体实现类
public class Realizetype implements Prototype
public Prototype clone()
// 最简单的克隆,创建一个自身对象,没有属性就不赋值了
Prototype prototype = new Realizetype();
return prototype;
// 访问类
public class ProtypeTest
private Prototype prototype;
// 此处可以传入想要创建的 Prototype 类型
public ProtypeTest(Prototype prototype)
this.prototype = prototype;
public void operation()
// 会需要创建原型接口的对象,可以自行操作
Prototype newPrototype = prototype.clone();
以上是关于设计模式之原型模式(创建型)的主要内容,如果未能解决你的问题,请参考以下文章