一、應用場景
在乙個特定的場景中經常需要出現多個相同但狀態各異的物件,通常的解決方法是通過new建立這些物件之後分別去設定這些物件的狀態。原型設計模式提供了更快捷、更有效的解決方法。
二、意圖
通過複製(轉殖、拷貝)乙個指定型別的物件來建立更多同型別的物件。這個指定的物件可被稱為「原型」物件,也就是通過複製原型物件來得到更多同型別的物件。
三、說明
原型設計模式的拷貝可以被分為深拷貝與淺拷貝。
深拷貝是指複製後的物件同原型物件不共享任何資料。如物件a內的乙個引用字段,它同複製物件b內的相同引用欄位不引用相同的物件,而是為物件b建立乙個新的引用物件。
淺拷貝不同於深拷貝,它的原型內的引用欄位同複製物件內的引用字段,引用的是同乙個物件。
c#中的拷貝可以使用object類的成員memberwiseclone進行淺拷貝,可以使用binaryformatter.serialized成員序列化技術來進行深度拷貝。
c++中的拷貝直接使用類中的複製建構函式進行拷貝。
四、例子
public inte***ce car
string carname
car clone();
}public class newcar:car
private string m_carname;
public string carname
getreturn m_carname;
setm_carname=value;
public
override
car clone()
拷貝**}}
void
main()
python 設計模式 原型模式 原型設計模式
原型設計模式有助於隱藏該類建立例項的複雜性,在物件的概念將與從頭建立的新物件的概念不同。如果需要,新複製的物件可能會在屬性中進行一些更改。這種方法節省了開發產品的時間和資源。如何實現原型模式?現在讓我們看看如何實現原型模式。實現如下 import copy class prototype type ...
設計模式 原型設計模式
建立型的模式,最後一種原型設計模式。是一種使用起來簡單,可以配合單例模式或是工廠設計模式使用的。先看一下,原型設計模式是怎麼回事兒吧。如果想使用原型設計模式。必須滿足乙個條件,首先實現cloneable介面,然後重寫clone方法。這樣就算是完成了,然後就開始測試了 建立完物件以後給phone乙個當...
設計模式 原型
一 功能 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。二 示例 namespace designpattern prototype class concreteprototype1 class concreteprototype1 public prototype class c...