设计模式之原型模式

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);
	}
	
	@Override
	protected Message clone() throws CloneNotSupportedException {
		Message m = (Message)super.clone();
		return m;
	}
}

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

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值