golang設計模式之原型模式

2021-10-10 14:08:03 字數 1183 閱讀 3039

原型(prototype)模式的定義如下:用乙個已經建立的例項作為原型,通過複製該原型物件來建立乙個和原型相同或相似的新物件。在這裡,原型例項指定了要建立的物件的種類。用這種方式建立物件非常高效,根本無須知道物件建立的細節。

定義乙個原型物件需要實現的介面

//原型物件需要實現的介面

//拷貝原有的資料

type cloneable inte***ce

實現乙個原型管理類

func

newprototypemanager()

*prototypemanager

}func

(p *prototypemanager)

get( name string

)cloneable

func

(p *prototypemanager)

set(name string

,prototype cloneable)

實現幾個原型類

type type1 struct

func

(t *type1)

clone

() cloneable

type type2 struct

func

(t *type2)

clone

() cloneable

測試

func

testnewprototypemanager

(t *testing.t)

mgr.

set(

"t1"

,t1)

t11 := mgr.

get(

"t1"

) t22 := t11.

clone()

if t11 == t22

else

}

1、效能提高。對客戶隱藏了具體的產品類,因此減少了客戶知道物件的數目。此外,這些模式使客戶無需改變即可使用與特定應用相關的類(和工廠模式、建造者模式一樣的效果)

2、高效。執行時刻增加和刪除產品,原型模式允許只通過客戶註冊原型例項就可以將乙個新的具體產品型別注入系統。

每種具體實現型別都要有乙個轉殖自己的操作。在某些場景會比較困難。

設計模式之原型模式

原型模式其實就是從乙個物件再建立乙個可定製的物件,而且不需要知道建立的細節。具體就是說通過複製或者轉殖乙個原型物件產生新的物件 轉殖物件 分為兩種 深複製或者淺複製,這兩種的主要區別是 在原型中如果有物件的引用,淺複製是將引用複製過來了,也就是淺複製和原型中的物件的引用相同,而深複製是將轉殖物件中引...

設計模式之原型模式

include include 此練習為原型模式方法的練習 原型模式揭示了在同一原型上可以通過複製使得 只需要例項化一次,再通過相應的類函式操作可以得到 同一原型下的不同的版本物件 此練習將考慮在實際開發中 比如 工作經歷也是作為乙個類被含在簡歷類中的情況 這情況將涉及到類的引用和深 淺複製 原型基...

設計模式之原型模式

原型模式的思想就是將乙個物件作為原型,對其進行複製 轉殖,產生乙個和原物件類似的新物件 複製過程可分為淺複製和深複製。淺複製是指直接呼叫父類 即object類 的clone方法 super.clone 該方法是本地 native 方法,呼叫該方法clone出來的新物件,基本資料型別的屬性變數是新建立...