原型模式(prototype pattern)是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。其實所謂的原型模式本質上是在勒種預留的對物件的複製介面。對於一些初始化資訊發生變化不大的情況下,可以採用clone的方式建立物件,不用每次都是重新初始化物件。例如,乙個物件需要在乙個高代價的資料庫操作之後被建立。我們可以快取該物件,在下乙個請求時返回它的轉殖,在需要的時候更新資料庫,以此來減少資料庫呼叫。
在.net中,system命名空間中提供了icloneable介面,唯一乙個方式clone()實現該介面就可以實現原型模式public object clone()
但是memberwiseclone()只能實現淺拷貝:如果欄位是值型別的,則對該字段執行逐位複製,如果欄位是引用型別,則複製引用但是不複製引用的物件,對於引用字段而言原始物件中的字段和副本中的字段使用同一物件。
深複製把引用物件的變數指向複製過的新物件,而不是原有的被引用的物件。
在c#中可以使用序列化和反序列化來實現深拷貝用到的命名空間
///二進位制序列化
/// using system.io;
/// using system.runtime.serialization.formatters.binary;
public
rootprivilege
deepcopy()
return
(rootprivilege)retval;
}
///使用xml序列化
///using system.xml.serialization;
public
rootprivilege
deepcopy()
return
(rootprivilege)retval;
}
設計模式 拷貝和原型模式
我對於設計模式還是一知半解的,最近看了幾個設計模式,單例模式和工廠模式是比較基礎和簡單的,這裡我就不贅述了,但是他們是最為普遍的設計模式,不了解的小夥伴們還是去看看為好。關於拷貝,這篇文章寫得特別好,深入淺出。總結起來就是 類初始化的過程比作列印,拷貝的過程比作影印。類載入的過程很複雜,如果我們迴圈...
設計模式五 原型模式
建立型模式最後一種 原型模式 一般用於框架 或者稱為轉殖模式 使用場景 當物件建立比較繁瑣 耗時 或者有訪問許可權的時候 可以使用原型模式 以某個物件為原型 複製出新的物件 不同於new 實現 實現cloneable 介面和重寫clone方法 記憶體賦值 public class sheep imp...
設計模式(五) 原型模式
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。通俗來說,原型模式就是從乙個物件,通過複製的手段去建立另外乙個物件,而且不需要知道任何建立的細節。思考 這麼做有什麼好處?角色說明 抽象原型類。宣告乙個轉殖自身的介面 抽象方法 具體原型類。實現乙個轉殖自身的方法 讓乙個原型轉殖自身從而...