設計模式 原型模式

2021-10-03 01:36:12 字數 1494 閱讀 2961

1.什麼是原型模式

2.原型模式有什麼優勢

3怎麼用原型模式

定義:原型模式就是用於建立重複的物件,當想要建立乙個新的物件但是開銷比較大或者想將物件的當前狀態儲存下來的時候,我們就可以使用原型模式。

有什麼優勢:重複建立耗時的物件時,可以明顯縮短時間

什麼時候用:重複建立耗時的物件.

注意深轉殖和淺轉殖的區別:

乙個物件中的字段有的是值型別的,有的是引用型別的。對於值型別字段來說,它的值就是簡單的值,而對於引用型別來說,它的值是位址。

淺複製在複製時,將這個物件的值字段和引用字段(均為非靜態字段)全部複製過去,獲得了這個物件的值和位址。

深轉殖:複製乙個現有物件,引用型別指向另乙個記憶體塊(改變轉殖物件的任何乙個值都不會影響其他值)

實現淺轉殖:.需要新增乙個clone方法,c#中一般使用memberwishclone方法來獲取例項的淺拷貝副本。

補充:如果想實現深拷貝常用的有兩種方法:①將原始例項序列化,然後反序列化賦值給副本物件;②淺拷貝+遞迴的方式,類似於遍歷資料夾,對所有的複雜屬性、複雜屬性內部的複雜屬性都進行淺拷貝。

直接上**

using system;

using system.diagnostics;

using system.io;

using system.runtime.serialization.formatters.binary;

using system.text;

using system.threading;

namespace prototypemodel

public prototypemodel(string name, int id)

public string name;

public int id;

public abstract prototypemodel clone();//淺轉殖

public abstract prototypemodel mclone();//深轉殖

}/// /// 建立乙個類,初始化耗費時間

///

[serializable]

public class prototype : prototypemodel

public prototype(string name, int id) : base(

name, id)

/// /// 二進位製流為深轉殖

///

///

public override prototypemodel mclone()

/// /// 淺轉殖

///

///

public override prototypemodel clone()

}static void main(string args)

}}

設計模式 原型模式

1.首先分析原型模式的由來 一般來說,建立乙個物件可以由以下方法 知道物件的具體型別,直接用new生成。不知道型號,知道相應的需求,可以使用工廠方法模式。根據乙個已有的物件來複製為乙個新的物件,可以使用原型模式。2.原型模式可以簡單理解為拷貝原型物件得到新的物件。想象乙個配鑰匙的小店,給店主乙個原有...

設計模式 原型模式

魔術師手拿一張百元大鈔,瞬間又變出兩張。也像配鑰匙一樣,拿一把鑰匙,老師傅就能做出另乙個一模一樣的。像這種複製我們並不陌生,類似於我們設計中的原型模式 本文將從以下幾點 原型模式 概述 結構圖 淺複製深複製 總結 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。允許乙個物件再建立另外...

設計模式 原型模式

原型模式 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。1 假設我們現有乙個物件,但是它的型別需要執行期確定,我們不知道它的動態型別是什麼,現在我們想建立它的副本。顯然通過建構函式建立是很麻煩的,這時候我們可以使用原型模式中的clone函式直接得到該物件的副本。2 有些時候我們想要...