這個模式我感覺對於我們大家來說真是的在熟悉不過了,不就是複製啊,在寫**的時候我有的時候就會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建立這些物件之後分別去設定這些物件的狀態。原型設計模式提供了更快捷 更有效的解決方法。二 意圖 通過複製 轉殖 拷貝 乙個指定型別的物件來建立更多同型別的物件。這個指定的物件可被稱為 原型 物件,也就是通...