原型(Prototype)设计模式

来源:互联网 发布:淘宝哪家眼镜店好 编辑:程序博客网 时间:2024/05/14 05:30

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

原型模式(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 方法实现克隆,是浅克隆的。

原创粉丝点击