原型模式
原型模式是一种对象的创建模式,面向的场景是需要创建多个同类对象,这些对象有着大部分的共同特征,使用原型将通性抽出来,克隆给新对象,然后给新对象设置个性的属性。
作用
减少代码量,减少重复劳动。怎么用
- 核心是实现Cloneable接口,重写clone方法
- 通用类图
- 示例
- 抽象原型类
public abstract class Prototype implements Cloneable {
private String name;
private String specialName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSpecialName() {
return specialName;
}
public void setSpecialName(String specialName) {
this.specialName = specialName;
}
// 实际使用要将其封装成public方法给包外类使用
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
* 具体原型类
public class ConcretePrototype extends Prototype {
}
* Client类
public class Client {
public static void main(String[] args) throws CloneNotSupportedException {
Prototype prototype = new ConcretePrototype();
prototype.setName("mainName");
List<Prototype> lp = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Prototype p = (Prototype) prototype.clone();
p.setSpecialName("special_" + i);
lp.add(p);
}
for (Prototype p : lp) {
System.out.println(p.getName() + " " + p.getSpecialName());
}
}
}