七、原型模式(原始模型模式)protoType

一、定義

通過給出一個原型對象來指明所要創建的對象的類型,然後用複製這個原型對象的方法創建出更多同類型的對象。原始模型模式允許動態的增加或減少產品類,產品類不需要非得有任何事先確定的等級結構,原始模型模式適用於任何的等級結構。缺點是每一個類都必須配備一個克隆方法。

二、結構圖


三、示例代碼

1、原型模式測試代碼Action.Java

/**
 * 測試原型模式
 * @author lattice
 *
 */
public class Action {
	public static void main(String[] args) {
		String id="lattice";
		ConcreteProtoType p1=new ConcreteProtoType(id);
		ConcreteProtoType c1= (ConcreteProtoType) p1.cloneSelf();
		System.out.println(c1.getId());
		System.out.println(p1.equals(c1));
		/**
		 * 輸出結果:
		  	lattice
			false
		 */
	}
}

2、原型類代碼ProtoType.java

/**
 * 抽象原型類
 * @author lattice
 *
 */
public abstract class ProtoType {
	private String id;
	public ProtoType(String id){
		this.id=id;
	}
	public String getId(){
		return this.id;
	}
	public abstract ProtoType cloneSelf();
}
/**
 * 具體原型類
 * @author lattice
 *
 */
class ConcreteProtoType extends ProtoType implements Cloneable{
	
	public ConcreteProtoType(String id) {
		super(id);
	}

	public ProtoType cloneSelf(){
		try {
			return (ProtoType) this.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 實現cloneable接口,並重寫clone方法,不然在一個未重寫cloneable接口的類對象調用clone方法時會
	 * 報:java.lang.CloneNotSupportedException
	 */
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章