大話設計模式七之原型模式

2021-08-19 05:41:07 字數 1296 閱讀 7689

簡歷影印

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

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

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

clone對效能是又大的提高的。每new一次,都需要執行一次建構函式,如果建構函式的執行時間很長,那麼多次的執行這個初始化操作就實在是太低效了。

等於是不用重新初始化物件,而是動態地獲得物件執行時的狀態。

淺複製與深複製

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

一般在初始化資訊不發生變化的情況下,轉殖是最好的辦法。這既隱藏了物件建立的細節,又對效能是大大的提高。

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

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

資料集物件dataset,它就又clone()方法和copy()方法,clone()方法用來複製dataset的結構,但不複製dataset的資料,實現了原型模式的淺複製。copy()方法不但複製結構,也複製資料,其實就是實現了原型模式的深複製。

大話設計模式之原型模式

用原型例項制定建立物件的種類,並通過拷貝這些原型。建立新的物件。就是從乙個物件在建立還有乙個可定製的物件。並且不須要知道不論什麼建立的細節。1 實現cloneable介面,能夠使用此介面的類上使用clone方法。2 重寫object類中的clone方法,由於全部類的父類是object類。object...

大話設計模式 原型模式

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

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

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