原型模式设计模式实现

原型模式设计模式实现步骤

  1. 先定义一个将来需要被复制的类,实现 Cloneable 接口,重写 copy 方法。

  2. 调用对象 clone 方法获取新对象。

案例

在一般的电商平台中,我们会有人员相关的信息,假如存在这样的场景,有一个人员信息对象,我们在合同中用到,在保险中用到,合同中需要对某几个字段进行修改,这个时候,我们就可以用原型模式。(也许这个例子不恰当,读者也可以自己想象。 在这里我们讲解浅拷贝的对象。)

首先我们创建一个 net.haicoder.prototype 包,在该包下面创建 Tourist.javaTestMain.java 文件。文件创建完毕,目录结构如下图:

19 原型模式代码结构图.png

Tourist.java 文件具体代码如下:

package net.haicoder.prototype; public class Tourist implements Cloneable { private String name; private Integer age; private String idCard; public Object clone() { Tourist tourist = null; try { tourist = (Tourist) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return tourist; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getIdCard() { return idCard; } public void setIdCard(String idCard) { this.idCard = idCard; } @Override public String toString() { return "Tourist{" + "name='" + name + '\'' + ", age=" + age + ", idCard='" + idCard + '\'' + '}'; } }

TestMain.java 文件具体代码如下:

package net.haicoder.prototype; public class TestMain { public static void main(String[] args) { Tourist tourist = new Tourist(); tourist.setAge(10); tourist.setName("嗨客网"); tourist.setIdCard("身份证id"); Tourist copyTourist = (Tourist) tourist.clone(); System.out.println("嗨客网(www.haicoder.net)"); copyTourist.setName("我是copy的"); System.out.println(copyTourist.toString()); } }

程序运行后,控制台输出如下信息:

20 原型模式运行结果图.png

原型模式设计模式总结

设计模式中原型模式的类必须继承 Cloneable 接口,并且对接口中的 clone 方法进行实现。