原型(Prototype)设计模式

本文介绍了原型模式的概念,通过一个简单的Java实例展示了如何使用原型模式来创建对象,并探讨了浅克隆和深克隆的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原型模式就是通过一个原型对象来表明要创建的对象类型,然后用复制这个对象的方法来创建更痛类型的对象。

原型模式(Prototype)的结构如下图所示:

 

Prototype 的参与者包括以下几类:

1. Prototype: 一个声明可以克隆的接口。

2. ConcretePrototype: 实现一个克隆接口,用于克隆自身。

3. Client: 让一个原型克隆自身,从而创建新对象。对克隆对象的使用。

 

下面是Prototype 的一个例子。

AbstractSpoon.java:

public abstract class AbstractSpoon implements Cloneable {
	String spoonName;

	public void setSpoonName(String spoonName) {
		this.spoonName = spoonName;
	}

	public String getSpoonName() {
		return this.spoonName;
	}

	public Object clone() {
		Object object = null;
		try {
			object = super.clone();
		} catch (CloneNotSupportedException exception) {
			System.err.println("AbstractSpoon is not Cloneable");
		}
		return object;
	}
}

 

SoupSpoon.java:

public class SoupSpoon extends AbstractSpoon {
	public SoupSpoon() {
		setSpoonName("Soup Spoon");
	}
}

 

Client.java:

public class Client {
	public static void main(String[] args){
		AbstractSpoon spoon = new SoupSpoon();
		AbstractSpoon spoon2 = (AbstractSpoon) spoon.clone();
		System.out.println(spoon.getSpoonName());
		System.out.println(spoon2.getSpoonName());
	}
}


AbstractSpoon 是一个 Prototype, Client 中调用其clone() 方法生成一个新的Spoon。

 

对于 Prototype 的 clone 来说,有浅克隆和深克隆之分。这里不多介绍,只需要知道如果使用 Object 类的clone 方法实现克隆,是浅克隆的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值