1. 原型模式介绍
原型模式通常用于创建重复对象,不需要知道任何创建的细节。它是一种创建型模式。
在Java中实现原型模式需要实现Cloneable接口,实现克隆。
1.1 原型模式的特点
数据内容相同,但对象实例不同。
在Spring中的Scope=Prototype使用的就是原型模式。
1.2 拷贝
说到克隆不得不想到拷贝,拷贝有浅拷贝和深拷贝。
浅拷贝: 直接拷贝内存地址,指向同一内存。
深拷贝: 拷贝一份副本,新开辟一块内存空间,地址指向新的内存空间。
2. 原型模式实现
在Java中实现原型模式非常简单。
实现Cloneable
public class Prototype implements Cloneable {
public String name;
}
克隆目标
public class Target extends Prototype {
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
克隆
public class CloneTest {
try {
Target p = new Target();
p.name = "Fuli";
Target obj = (Target) p.clone();
System.out.println(obj.name);
} catch (Exception e) {
e.printStackTrace();
}
}
输出
Fuli
设计模式是程序员内功之一,切记不要死记硬背,用心理解。下篇将介绍代理模式。