原型設計模式

2021-07-26 13:34:53 字數 1654 閱讀 6232

這個模式我感覺對於我們大家來說真是的在熟悉不過了,不就是複製啊,在寫**的時候我有的時候就會ctrl+c,ctrl+v,複製的時候挺爽,出錯的時候別哭就行,嘻嘻

(如有異同請指出)

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

解釋:我們通過原型模式可以快速的建立乙個物件而不需要提供專門的new()操作就可以快速完成物件的建立,這無疑是一種非常有效的方式,快速的建立乙個新的物件,原型模式其實就是從乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。

當我們學習工廠模式和簡單工廠等一些模式的時候,我們需要在開頭的時候就需要new乙個物件而原型設計模式突破了這種繁瑣,它不用一點一點的從頭開始進行(初始化新物件),直接利用結果就好(動態的獲得物件執行時的狀態)

例如圖:

說簡單點其實原型設計模式就是copy出來乙個原來物件,就像孫悟空拔下一嘬猴毛,輕輕一吹就會變出好多的孫悟空來。

object類的clone方法只會拷貝物件中的基本的資料型別,對於陣列、容器物件、引用物件等都不會拷貝,這就是淺拷貝。

淺複製其實就是傳引用,當copy的時候我們copy的是位址中的內容,當位址中的內容改變,我們隨之也改變

實現深拷貝:必須將原型模式中的陣列、容器物件、引用物件等另行拷貝

深複製其實就是傳引用,當copy的時候我們copy的是值,也就是說當位址中的值改變的時候不會影響到我們原來的值。

在**中體現淺複製與深複製的區別,通過介面我們可以看出區別

如圖

深複製**類

//簡歷類

class resume : icloneable

//提供clone方法呼叫的私有建構函式,以便轉殖工作經歷的資料

private

resume(workexperience work)..

..//呼叫私有的構造方法,讓工作經歷轉殖完成,然後

public

object

clone()

}//工作經歷類實現icloneable

class workexperience:icloneable

set

}//定義公司

private

string company;

//屬性

public

string company

set

}//工作盡力類實現轉殖方法

public

object

clone()

}

淺複製**

//簡歷類

class resume:icloneable ..

.public

object

clone()

}//工作經歷類

class workexperience

{//定義工作時間字段

private

string workdate;..

......

python 設計模式 原型模式 原型設計模式

原型設計模式有助於隱藏該類建立例項的複雜性,在物件的概念將與從頭建立的新物件的概念不同。如果需要,新複製的物件可能會在屬性中進行一些更改。這種方法節省了開發產品的時間和資源。如何實現原型模式?現在讓我們看看如何實現原型模式。實現如下 import copy class prototype type ...

設計模式 原型設計模式

建立型的模式,最後一種原型設計模式。是一種使用起來簡單,可以配合單例模式或是工廠設計模式使用的。先看一下,原型設計模式是怎麼回事兒吧。如果想使用原型設計模式。必須滿足乙個條件,首先實現cloneable介面,然後重寫clone方法。這樣就算是完成了,然後就開始測試了 建立完物件以後給phone乙個當...

原型設計模式

一 應用場景 在乙個特定的場景中經常需要出現多個相同但狀態各異的物件,通常的解決方法是通過new建立這些物件之後分別去設定這些物件的狀態。原型設計模式提供了更快捷 更有效的解決方法。二 意圖 通過複製 轉殖 拷貝 乙個指定型別的物件來建立更多同型別的物件。這個指定的物件可被稱為 原型 物件,也就是通...