原型模式的英文原文:Specify the kinds of object to create using a prototypocal instance, and create new objects by copying this prototype.意思是:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。
原型模式有三个角色:
1、客户角色:由它提出创建对象的请求。
2、抽象原型接口:给出具体原型所需的接口,该接口通常实现了cloneable接口。
3、具体原型角色:该角色是被复制的对象,实现抽象原型的接口。
原型模式的类图:
各个类对应的代码如下:
抽象原型:
package com.zz.prototpye;
/**
* 抽象原型继承Cloneable接口,表明该接口实现的类可以被复制
* @author txxs
*
*/
public interface Prototype extends Cloneable {
//克隆方法,java内置克隆机制,能够实现对象的克隆
Prototype clone();
}
具体原型:
package com.zz.prototpye;
/**
* 实现对象的克隆
* @author txxs
*
*/
public class ConcretePrototype implements Prototype {
@Override
public Prototype clone() {
try {
return (Prototype)super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
}
客户端:
package com.zz.prototpye;
/**
* 客户端实现
* @author txxs
*
*/
public class Client {
public void operation(Prototype e){
Prototype p = e.clone();
}
}
通过一个实例来说明:给不同的人发送促销消息,首先声明一个促销消息对象,通过克隆来克隆不同的消息对象,在将被克隆的对象设置给不同的用户,再将消息进行发送, 源码下载。实现效果: