設計模式之-原型模式-Prototype

悠悠隱於市發表於2011-04-17
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。
 適用性
    1.當一個系統應該獨立於它的產品建立、構成和表示時。

    2.當要例項化的類是在執行時刻指定時,例如,通過動態裝載。

    3.為了避免建立一個與產品類層次平行的工廠類層次時。

    4.當一個類的例項只能有幾個不同狀態組合中的一種時。

    建立相應數目的原型並克隆它們可能比每次用合適的狀態手工例項化該類更方便一些。
			
參與者
    1. Prototype
       宣告一個克隆自身的介面。

    2. ConcretePrototype
       實現一個克隆自身的操作。

    3. Client
       讓一個原型克隆自身從而建立一個新的物件。
 
package pack.java.demo;
/**
 * 原型模式 實現克隆介面;
 * @author Administrator
 *
 */
public class Prototype implements Cloneable{
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public Object clone(){
		Object obj = null;
		try {
			obj = super.clone();
		} catch (CloneNotSupportedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return obj;
	}
}
 
package pack.java.demo;

public class ConcretePrototype extends Prototype{
	
	public ConcretePrototype(String name){
		setName(name);
	}
}	
 
package pack.java.demo;

public class TestPrototype {

	/**
	 * 主方法;
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Prototype concretePrototype = new ConcretePrototype("Test");
		Prototype prototype = (Prototype) concretePrototype.clone();
		System.out.println(concretePrototype.getName());
		System.out.println(prototype.getName());
	}
}
 
執行結果:
Test
Test

相關文章