/**
* 原型模式
* * @author 七夜雪
* @create 2018-11-23 10:51
*/public
class
person
implements
cloneable
@override
public string tostring()
';}// ..............setter, getter方法省略.................
}
測試**:
public
static
void
main
(string[
] args)
throws exception
輸出結果:
原型:person
拷貝:person
public
static
void
main
(string[
] args)
throws exception
輸出結果:
原型:person
拷貝:person
--------------更新了clone物件的birthday屬性---------------
原型:person
拷貝:person
從上面的輸出結果可以看出, 這種情況下prototype和clone物件的birthday屬性還是同乙個物件, 這種就是淺轉殖, 又叫淺拷貝, 這種情況就需要改寫clone方法, 對birthday屬性再進行一次clone操作, 修改後的clone方法如下:
@override
protected object clone()
throws clonenotsupportedexception
修改完之後, 再執行上面的測試用例, 就會發現結果已經正確了:
原型:person
拷貝:person
--------------更新了clone物件的birthday屬性---------------
原型:person
拷貝:person
Java 設計模式之原型模式 Prototype
模式名原型模式prototype 定義原型模式是建立型模式 的一種,其特點在於通過 複製 乙個已經存在的例項 來返回新的例項,而不是新建例項。被複製的例項就是我們所稱的 原型 這個原型是可定製的。原型模式多用於建立複雜的或者耗時的例項,因為這種情況下,複製乙個已經存在的例項使程式執行更高效 或者建立...
設計模式學習系列6 原型模式(prototype)
原型模式 prototype 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。允許乙個物件再建立另外乙個新物件的時候根本無需知道任何建立細節,只需要請求圓形物件的copy函式皆可。1原型模式構成 客戶 client 角色 客戶類提出建立物件的請求。抽象原型 prototype 角色 ...
設計模式 原型模式
1.首先分析原型模式的由來 一般來說,建立乙個物件可以由以下方法 知道物件的具體型別,直接用new生成。不知道型號,知道相應的需求,可以使用工廠方法模式。根據乙個已有的物件來複製為乙個新的物件,可以使用原型模式。2.原型模式可以簡單理解為拷貝原型物件得到新的物件。想象乙個配鑰匙的小店,給店主乙個原有...