原型模式 建立型設計模式四

2021-06-12 02:13:38 字數 1392 閱讀 6886

一、原型模式

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。

用例項來說話:我要發簡歷,自己寫了乙份模板,然後複製了n 份。如下:

//模板:class resume

}//客戶端:

static void main(string args)

如果現在我想改,那就得把n份全改了,本來只是改動一點,卻需要很長時間,沒效率,真是費力不討好的工作。

原型模式可以改變這種低階費力的工作。

原型模式其實就是從乙個物件在建立靈位乙個可定製的物件,而且不需知道任何建立的細節。在原型模式通過轉殖clone來實現物件之間的這種定製。

區別:以前的複製是每個物件都去例項化類,現在的轉殖,是只例項化乙個物件,然後通過這個物件傳遞給其他物件。

具體如下:

class resume

//模板中增加轉殖方法

public object clone()}

static void main(string args)

clone方法時將當前物件的非靜態字段複製到該新物件,如果欄位是值型別,則對該字段執行逐位複製。如果欄位是引用型別,則複製引用但不複製引用的物件。

有人有問了,那我要向實現將引用的物件也轉殖過來怎麼辦?

上邊的方法在模板中新增clone 是一種淺複製,還有一種深複製,可以解決轉殖引用物件的問題。

深複製

深複製需要增加三步:

1、讓引用的類也繼承系統的轉殖類icloneable,在類中新增轉殖方法。

2、在呼叫類中,增加以被呼叫類為引數的私用建構函式,結果返回被呼叫類轉殖方法,從而實現轉殖。

3、在呼叫類的轉殖方法中,呼叫私用構造方法,讓引用轉殖完成。

假如工作經歷類為要呼叫的類:

1、讓工作經歷類繼承介面

class workexperience :icloneable

}

2、在簡歷類中增加私有建構函式

private resume(workexperience work)

3、修改簡歷類中的轉殖方法。

public object clone()

二、類圖

建立型設計模式 原型模式

總結 羊 program ade someproblem author cade franklin create 2019 12 22 22 12 public class sheep tostring setter getter program ade someproblem author cad...

設計模式(建立型) 原型模式

原型模式的定義 以乙個已經建立的例項作為原型,通過複製該物件來建立乙個和原型相同或相似的新物件。1.複製在效能上比直接 new 乙個物件更加優良。2.可以使用深拷貝方式儲存物件的狀態,使用原型模式將物件複製乙份,並將其狀態儲存起來,可輔助實現撤銷操作。1.需要為每乙個類配備乙個轉殖方法,對已有的類進...

建立型設計 原型模式

宣告一下 本文的文字多數文字都是來自網上,只有例子是自己寫的。因為自我感覺還沒有能力能夠系統的解釋乙個模式,已經有現成的比較完善的說明,就不重複造輪子哈。原型模式是一種建立型設計模式,它通過複製乙個已經存在的例項來返回新的例項,而不是新建例項.被複製的例項就是我們所稱的原型,這個原型是可定製的。原型...