有時需要生成多個相同的物件,最普通的方法就是就是用相同的屬性new相同的物件:
public class main
}class chicken
}
這樣做的缺點是,如果需要修改乙個屬性,其他物件的屬性就要跟著改一遍,有乙個便捷的方法,就是採用
原型模式,從乙個物件再建立另外乙個可定製的物件,不需要知道任何建立的細節:
public class main
}class chicken implements cloneable
@override
public string tostring() ';
}@override
protected object clone() throws clonenotsupportedexception
}
通過重寫object類的clone方法(必須實現cloneable介面,不然會拋
clonenotsupportedexception異常),因為clone是native底層的方法,所以會提高效能,並且當要修改其中一屬性時,只需對其原型物件(chicken1)修改即可,但上述方法只能對物件裡面的值複製,也就是說對於引用型別,上面**的處理是複製其引用,並不會複製引用的具體物件,所以上述方法被稱為
淺轉殖(複製),下面來乙個
深轉殖的例子:
public class main
}class egg implements cloneable
@override
protected object clone() throws clonenotsupportedexception
public void setname(string name)
public void setage(int age)
@override
public string tostring() ';
}}class chicken implements cloneable
@override
public string tostring() ';
}@override
protected object clone() throws clonenotsupportedexception
public void setegg(egg egg)
}
這次連雞裡的蛋都是整個物件都給複製了(不是引用複製)
設計模式 6 原型模式
1996年7月5日,英國科學家伊恩 威爾穆特博士成功的轉殖出了乙隻小羊,小羊與它的 母親 一模一樣。這只小羊的名字就是dolly。dolly是由 不要認為介紹多莉轉殖的故事和本文牛頭不對馬嘴,事實上多少還是有點關係的。1.什麼是原型模式?原型模式就是用來建立重複的物件,再直白一點 複製貼上的原理。怎...
C 設計模式(6) 原型模式
在軟體系統開發中,有時候會遇到這樣的情況 我們需要用到多個相同例項,最簡單直接的方法是通過多次呼叫new方法來建立相同的例項。如下 person person new person person person2 new person person person3 new person 但是有乙個問題...
設計模式 原型模式
1.首先分析原型模式的由來 一般來說,建立乙個物件可以由以下方法 知道物件的具體型別,直接用new生成。不知道型號,知道相應的需求,可以使用工廠方法模式。根據乙個已有的物件來複製為乙個新的物件,可以使用原型模式。2.原型模式可以簡單理解為拷貝原型物件得到新的物件。想象乙個配鑰匙的小店,給店主乙個原有...