原型模式

原型模式(Prototype Pattern

意图

用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。

动机

系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就更高效。

适用性

原型模式通常适用于以下场景:

  • 对象之间相同或相似,即只是个别的几个属性不同的时候。
  • 对象的创建过程比较麻烦,但复制比较简单的时候。

结构


实现

描述实现模式时使用的技巧,及需要面对的问题。

已知应用

public class ConcretePrototype implements Cloneable {

	public ConcretePrototype() { 
		System.out.println("创建具体原型。。。");
	}
	public Object clone() throws CloneNotSupportedException {
		System.out.println("复制具体原型。。。");
		// 父类Object.clone()的浅拷贝
		return (ConcretePrototype) super.clone();
	}

}

public class TestPrototype {

	public static void main(String[] args) throws CloneNotSupportedException {
		ConcretePrototype prototype = new ConcretePrototype();
		ConcretePrototype clone = (ConcretePrototype) prototype.clone();
		System.out.println("原型和拷贝对象引用是否相同:" + (prototype == clone));
	}
}

相关模式

参考资料

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值