**實現:
public
class
person
implements
cloneable
public
void
setname
(string name)
@override
protected person clone()
throws clonenotsupportedexception
//測試**:
public
static
void
main
(string[
] args)
throws clonenotsupportedexception
}
在呼叫super.clone方法之後,首先會檢查當前物件所屬的類是否實現cloneable介面,如果支援就拷貝物件,並對物件初始化,使得拷貝物件與被拷貝物件的成員變數屬性值一樣。但是對於其他引用型別的成員變數以及集合型別的成員變數,則只能複製這些物件的引用。簡單呼叫super.clone方法就是一種淺轉殖。
**演示:
//引用物件類
public
class
dogpublic string getname()
public
void
setname
(string name)
}public
class
person
implements
cloneable
public
void
setdog
(dog dog)
public string getname()
public
void
setname
(string name)
@override
protected person clone()
throws clonenotsupportedexception
public
static
void
main
(string[
] args)
throws clonenotsupportedexception
}
深拷貝:是把物件的所有成員變數都拷貝,包括引用型別的變數。
**演示:
dog類:
public
class
dogimplements
cloneable
public string getname()
public
void
setname
(string name)
@override
protected object clone()
throws clonenotsupportedexception
@override
public string tostring()
';}}
person類
public
class
person
implements
cloneable
public
void
setdog
(dog dog)
public string getname()
public
void
setname
(string name)
@override
protected person clone()
throws clonenotsupportedexception
@override
public string tostring()
';}public
static
void
main
(string[
] args)
throws clonenotsupportedexception
}
設計模式之原型模式
原型模式其實就是從乙個物件再建立乙個可定製的物件,而且不需要知道建立的細節。具體就是說通過複製或者轉殖乙個原型物件產生新的物件 轉殖物件 分為兩種 深複製或者淺複製,這兩種的主要區別是 在原型中如果有物件的引用,淺複製是將引用複製過來了,也就是淺複製和原型中的物件的引用相同,而深複製是將轉殖物件中引...
設計模式之原型模式
include include 此練習為原型模式方法的練習 原型模式揭示了在同一原型上可以通過複製使得 只需要例項化一次,再通過相應的類函式操作可以得到 同一原型下的不同的版本物件 此練習將考慮在實際開發中 比如 工作經歷也是作為乙個類被含在簡歷類中的情況 這情況將涉及到類的引用和深 淺複製 原型基...
設計模式之原型模式
原型模式的思想就是將乙個物件作為原型,對其進行複製 轉殖,產生乙個和原物件類似的新物件 複製過程可分為淺複製和深複製。淺複製是指直接呼叫父類 即object類 的clone方法 super.clone 該方法是本地 native 方法,呼叫該方法clone出來的新物件,基本資料型別的屬性變數是新建立...