1、定义
原型模式(Prototype)就是通过复制一个已经存在的实例来返回新的实例,而不是新建实例,被复制的实例就是我们所称的原型对象,这个原型是可定制的。
2、原理
有两部分组成,抽象原型和具体原型。意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
3、原型模式UML图
4、实现
1>使用一个原型管理器;
2>实现克隆操作(浅拷贝和深拷贝);
3>初始化克隆对象。
5、示例程序
(1)利用Java中的clone方法深拷贝与浅拷贝
浅拷贝:
public class Professor { private String address; private double salary; public Professor(String address, double salary) { this.address = address; this.salary = salary; } public void setAddress(String address) { this.address = address; } public void setSalary(double salary) { this.salary = salary; } @Override public String toString() { return "Professor [address=" + address + ", salary=" + salary + "]"; } } public class Student implements Cloneable { private String name; private int age; private Professor professor; public Student(String name, int age, Professor professor) { this.name = name; this.age = age; this.professor = professor; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", Professor=" + professor.toString() + "]"; } @Override public Object clone() { Student student = null; try { // 在运行时,Object中的clone识别出你要复制的是哪一个对象,Object中的clone() // 然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。 student = (Student) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return student; } |