设计模式之原型模式

来源:互联网 发布:网络投资诈骗寻求帮助 编辑:程序博客网 时间:2024/05/29 18:02

1 定义

原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

UML类图为



2 通用代码


package DesignPatterns;public class Prototype {public static void main(String[] args) throws CloneNotSupportedException {// 客户端调用Message msg1 = new Message(139);msg1.setText("回家吃饭了!");msg1.sendMessage();Message msg2 = msg1.clone();msg2.setText("还没回来?");msg2.sendMessage();}}// 短信类class Message implements Cloneable{private int number;private String content;public Message(int number){this.number = number;}public void setText(String content){this.content = content;}public void sendMessage(){System.out.println(content);}@Overrideprotected Message clone() throws CloneNotSupportedException {Message m = (Message)super.clone();return m;}}

一般在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建的细节,又对性能是大大提高。使用原型模式,要比直接new一个对象性能好的多,因为它是在内存二进制流的拷贝。

这里还需注意的是java中的clone默认是浅拷贝,关于深拷贝和浅拷贝请看原文;