大話設計模式 原型模式 9

2021-09-07 06:12:43 字數 2834 閱讀 8774

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

prototypefactory

}public prototype(string

id)

public

abstract

prototype clone();

}}

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

prototypefactory

public

override

prototype clone()

}}

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

prototypefactory

private

resume(workexperinece work)

public

void setpersonalinfo(string ***,string

age)

public

void

display()

",name,***,age);

console.writeline(

"工作經歷:

", work.workdate, work.company);

}public

void setworkexperinece(string woekdate,string

company)

public

object

clone()

}}

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

prototypefactory

set

}private

string

company;

public

string

company

set

}public

object

clone()

}}

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

prototypefactory

",ci.id);

//原型模式,深度複製

resume a = new resume("大鳥"

); a.setpersonalinfo("男

", "29"

); a.setworkexperinece(

"1999-8-1

","xx公司");

resume b =(resume)a.clone();

b.setworkexperinece(

"1878-2-5

","yy企業");

resume c =(resume)a.clone();

c.setpersonalinfo("男

", "24"

); c.setworkexperinece(

"1978-2-5

", "

zz企業");

a.display();

b.display();

c.display();

console.readline();}}

}

原型模式

原型模式(prototype),用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件.

原型模式其實就是從乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。

.net 在system 命名空間中提供了icloneable 介面,其中就是唯一的乙個方法clone(),實現這個介面就可以完成原型模式了。

一般在初始化的資訊不發生變動的情況下,不用重新初始化物件,而是動態的獲得物件執行時的狀態,轉殖是最好的方法。這既隱藏了物件建立的細節,又對效能是大大的提高。

淺複製與深複製

memberwiseclone() 方法是這樣,如果欄位是值型別的,則對該字段進行逐位複製,如果欄位是引用型別,則複製引用但不複製引用的物件:因此,原始物件及其複本引用同一物件。

淺複製,被複製物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用都仍然指向原來的物件。

深複製,把引用物件的變數指向複製過的新物件,而不是原有的被引用的物件。

大話設計模式 原型模式

學無止境,精益求精 十年河東,十年河西,莫欺少年窮 學歷代表你的過去,能力代表你的現在,學習代表你的將來 上篇部落格介紹了c 深淺複製,其實原型模式講的主要就是物件的深淺複製 參考 c 深淺複製 memberwiseclone ok,言歸正傳 原型模式的概念 用原型例項指定建立物件的種類,並且通過拷...

《大話設計模式》 原型模式

如果物件的建立成本比較大,而同乙個類的不同物件之間差別不大 大部分欄位都相同 在這種情況下,我們可以利用對已有物件 原型 進行複製 或者叫拷貝 轉殖 的方式,來建立新物件,以達到節省建立時間的目的。這種基於原型來建立物件的方式就叫作原型設計模式,簡稱原型模式。核心 拷貝 轉殖 建立物件包含的申請記憶...

《大話設計模式》 簡歷影印 原型模式 9

p 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原形模式其實就是從乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。在.net中,抽象類prototype是用不著的,在system命名空間中提供了icloneable介面,其中就是唯一乙個方法是clone 只要實現...