1. 原型模式概述
概念
- 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
- 在 Java 中,Object 的
clone()
方法就属于原型模式。可以简单理解为:原型模式就是用来克隆对象的
Demo
奶茶类
1
2
3
4
5
6
7
8
9
10
11public class MilkTea{
public String type;
public boolean ice;
public MilkTea clone(){
MilkTea milkTea = new MilkTea();
milkTea.type = this.type;
milkTea.ice = this.ice;
return milkTea;
}
}下单
1
2
3
4
5
6
7
8
9
10private void order(){
MilkTea milkTeaOfJay = new MilkTea();
milkTeaOfJay.type = "原味";
milkTeaOfJay.ice = false;
MilkTea yourMilkTea = milkTeaOfJay.clone();
// 一千位粉丝都调用 milkTeaOfJay 的 clone 方法即可
...
}优化
1
2
3
4
5
6
7
8
9
10public class MilkTea implements Cloneable{
public String type;
public boolean ice;
protected MilkTea clone() throws CloneNotSupportedException {
return (MilkTea) super.clone();
}
}- Java 中有一个语法糖,让我们并不需要手写
clone()
方法。这个语法糖就是 Cloneable 接口,只要让需要拷贝的类实现此接口接口 - 需要注意的是,Java 自带的
clone()
方法是浅拷贝的。也就是说调用此对象的clone()
方法,只有基本类型的参数会被拷贝一份,非基本类型的对象不会被拷贝一份,而是继续使用传递引用的方式。如果需要实现深拷贝,必须要自己手动修改clone()
方法才行
- Java 中有一个语法糖,让我们并不需要手写