原型 Prototype 模式

2022-04-29 03:39:13 字數 1919 閱讀 2084

模式定義:用乙個已經建立的例項作為原型,通過複製該原型物件來建立乙個和原型相同或相似的新物件。在這裡,原型例項指定了要建立的物件的種類。用這種方式建立物件非常高效,根本無須知道物件建立的細節。

package prototype;

public class prototypetest }

system.out.println("clone: "+clone); //clone: 2133927002 ] product}

product.getbaseinfo().setcompanyname("yyy");

system.out.println("original:"+product);//original:1735600054 ] product}

system.out.println("clone: "+clone);//clone: 2133927002 ] product}

//改變原始的公司名字,會導致之前轉殖的也改變,hashcode值是一樣的

//深拷貝 test結果修改完**自己測試即可,檢查結果

}}//實現cloneable

class baseinfo implements cloneable

public string getcompanyname()

public void setcompanyname(string companyname)

@override

public int hashcode()

@override

public string tostring() ';

}@override

protected baseinfo clone() throws clonenotsupportedexception

}//1轉殖機制,實現cloneable

class product implements cloneable

public product(string part1, string part2, string part3,baseinfo baseinfo)

public string getpart1()

public baseinfo getbaseinfo()

public void setbaseinfo(baseinfo baseinfo)

public void setpart1(string part1)

public string getpart2()

public void setpart2(string part2)

public string getpart3()

public void setpart3(string part3)

/*** 實現此介面的類應該使用公共方法重寫object的clone()方法,object的clone()方法是乙個受保護的方法

* 直接在裡面強制裝換位product

* @return

* @throws clonenotsupportedexception

*///淺拷貝:

// @override

// protected product clone() throws clonenotsupportedexception

/***深拷貝

*/@override

protected product clone() throws clonenotsupportedexception

@override

public string tostring() ';

}@override

public int hashcode()

}

應用場景:當**不依賴於需要複製的物件的具體類時,使用prototype 模式。

優點:

原型模式(ProtoType)

1.目的 當需要從乙個物件copy出另外乙個物件時,可以使用原型模式,本質上是呼叫的copy建構函式 與copy建構函式的區別,可能就是不需要顯示的生成物件,而是通過函式呼叫 2.prototype.h ifndef prototype h define prototype h include in...

Prototype 原型模式

prototype 原型模式 所謂原型模式,就是可以根據乙個原型,快速建立出其拷貝。如 int a 1 int b new int a a cout a endl cout b endl 輸出結果 2 1 上面就使用了原型模式。根據原型a,快速建立出了a的拷貝b。同時,b儲存了a當時的狀態。當a之後...

原型模式 Prototype

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式是一種建立型設計模式,它允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是通過將乙個原型物件傳給那個要發動建立的物件,這個要發動的物件通過請求原型物件拷貝它們自己來實施建立。現實很殘酷,都第9章了...