在有些系統中,存在大量相同或相似物件的建立問題,如果用傳統的建構函式來建立物件,會比較複雜且耗時耗資源,用原型模式生成物件就很高效,
原型(prototype)模式的定義如下:用乙個已經建立的例項作為原型,通過複製該原型物件來建立乙個和原型相同或相似的新物件。在這裡,原型例項指定了要建立的物件的種類。用這種方式建立物件非常高效,根本無須知道物件建立的細節。
原型模式的優點:
原型模式的缺點:
模式的結構
原型模式包含以下主要角色。
模式的實現
【例1】 張三和他的雙胞胎弟弟李四,除了名字,其他都一樣,這哥倆沒事還養了條狗。張三給狗起名叫 旺柴,李四不喜歡這個名字,給這狗起了個 阿黃。但這個狗還是一條狗吧。
class
dogpublic
void
setname
(string name)
public
dog(string name)
@override
public string tostring()
';}}
public
class
person
implements
cloneable
public
person
(int age, string name, dog dog)
public
intgetage()
public
void
setage
(int age)
public string getname()
public
void
setname
(string name)
public dog getdog()
public
void
setdog
(dog dog)
@override
public string tostring()
';}@override
public object clone()
throws clonenotsupportedexception
/** * @param args
* @throws clonenotsupportedexception
*/public
static
void
main
(string[
] args)
throws clonenotsupportedexception
}
【例2】上面,李四不是給狗改名了麼。張三不答應了,對她媽說,你當初生我為啥不給我單獨養條狗。得嘞,要的就是這句話。
修改dog,實現 cloneable 介面,重寫clone()方法
class
dogimplements
cloneable
}
修改 person 的 clone() 方法
@override
public object clone()
throws clonenotsupportedexception
原型模式通常適用於以下場景。 建立型模式之原型模式
功能 用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。原型模式其實就是從乙個物件建立另外乙個可定製的物件,而且不需知道任何建立的細節。優點 一般在初始化的資訊不發生變化的情況下,轉殖是最好的辦法,既隱藏了物件建立細節,又提高效能。其等於是不用重新初始化物件,而是動態地獲得物件執行時的狀...
建立型模式之原型模式
1 概述 通過給出乙個原型物件來指明所要建立的物件的型別,利用這個原型物件來建立更多相似的統一型別的物件但又不是同乙個物件 世界上可能有千千萬萬個人,但你就是你,你是獨一無二的,顏色不一樣的花火,你是最棒的 因為如果直接建立物件的話,代價可能就會比較大,它屬於建立型模式的一種,它提供了一種建立物件的...
建立型模式 原型模式
使用原型例項指定建立物件的種類,並且通過轉殖這些原型建立新的物件 原理是將乙個原型物件傳給要發動建立的物件,該物件通過請求原型物件轉殖自己來建立過程 轉殖方法 public prototype clone jdk中為我們提供了轉殖的方法clone 從object繼承下來,乙個物件要實現轉殖,需要實現...