设计模式之原型模式

设计模式之原型模式

使用原型实例指定要创建的对象类型,并通过复制此原型来创建新对象.实现方法:通过克隆方法,实现对现有对象的复制克隆.

应用场景

  • 当要在运行时指定要实例化的类时,例如,通过动态加载.
  • 避免构建与产品类层次结构相似的工厂类层次结构
  • 当一个类的实例可以只有几个不同的状态的组合之一时.组装相应数量的原型并克隆它们可能更方便,而不是手动实例化类,每次都有适当的状态.
  • 与对象创建相比,使用克隆成本更低

代码

直接由代码看结构,其实克隆的过程就是创建对象的过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* 一个细胞
* @Author nanyin
* @Date 23:49 2019-06-01
**/
public class Cell implements Cloneable{

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Cell(){
}

private Cell(String name) {
this.name = name;
}

@Override
protected Cell clone() throws CloneNotSupportedException {
super.clone();
return new Cell(name);
}
}

客户端程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class App {
@Test
public void testPrototype(){
Cell cell = new Cell();
cell.setName("org");
try{
Cell cloneCell = cell.clone();
Assert.assertEquals("org",cloneCell.getName());//pass
Assert.assertEquals(cell,cloneCell);//not pass
}catch (CloneNotSupportedException e){
e.printStackTrace();
}
}
}
-------------本文结束感谢您的阅读-------------

本文标题:设计模式之原型模式

文章作者:NanYin

发布时间:2019年06月02日 - 12:06

最后更新:2019年08月12日 - 13:08

原始链接:https://nanyiniu.github.io/2019/06/02/2019-06-02-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%BC%8F/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。