設計模式筆記之四 原型模式

2022-07-04 02:30:16 字數 2326 閱讀 1779

原型模式

原型模式就是需要建立多個例項的時候,以乙個為原型,其他例項複製/轉殖這個原型來獲得相似的例項。

我們的實驗室最近研究這個模式還是因為市場的原因,市場上由於長久以來的習俗和政策,對女人的需求比較大,所有我們就的擴大女人的生產線,但是由於資金的原因,我們不能投入硬體成本只能改進我們的方法。

首先我們得分析女人的構成:

class

nvren

}

我們以前生產女人的時候我們把預設好的名字,頭型,身型,型別在建立女人的時候傳入(好吧,我承認女人很難懂,但我們春秋筆法下~~)。

public

class

prototype

}

研究了很久,我們的市場部經理終於有了想法:由於高富帥客戶不需要我們的產品,現在需求我們產品的客戶基本上都屬於醜矮窮搓擼的型別,他們對我們的產品也沒有多少要求,只要有不同名字就行,我覺得我們可以批量生產女人,出廠的時候再給他們設定下不同的名字就行了,所以我們更改了我們的女人類:

class nvren implements

cloneable

public

void

setname(string name)

@override

protected

nvren clone()

catch

(clonenotsupportedexception e)

return

nr; }

}

public

class

prototype

}

當我們的產品投放到市場的時候,卻很是悲摧了,因為他們投訴我們生產的女人只有乙個卻頂著不同的名字到處賣。

我們只能再次研究,最後發現我們的乙個工程師為了更加方便的生產,對我們的女人類作了些改變:

class

routi

}class nvren implements

cloneable

private

nvren(string name, routi routi)

public

void

setname(string name)

public

routi getrouti()

@override

protected

nvren clone()

catch

(clonenotsupportedexception e)

return

nr; }

}

我們做了一些測試發現這些女人雖然有不同的名字,但是她們共用乙個肉體

public

class

prototype }//

------> output

經研究發現:當我們使用clone方法的時候,我們做的只是淺轉殖,淺轉殖只會複製值型別的屬性,引用型別的屬性只會複製其引用(即指標)而不會複製整個引用的物件。

所以我們要轉殖女人的時候還得轉殖肉體:

class routi implements

cloneable

@override

protected

routi clone()

catch

(clonenotsupportedexception e)

return

rt; }

}class nvren implements

cloneable

private

nvren(string name, routi routi)

public

void

setname(string name)

public

routi getrouti()

@override

protected

nvren clone()

}

這時我們就能得到正確的結果:不同的女人有不同的肉體

//

--->output

這是我們的乙個宅男工程師提出乙個問題: 當我們的的肉體類種新加乙個屬性叫likewho,並且 值是女人類:

private nvren likewho;

哥只能說:遇到這種情況,要麼是你的女人類設計得有問題,要麼就只能放棄原型模式。

設計模式筆記四 原型模式

基本介紹 原型模式 prototype 模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...

四 Python 設計模式之原型模式

原型模式的目的是轉殖物件 或者 副本 類似於淺拷貝和深拷貝 淺拷貝就是 副本依賴引用 深拷貝就是 完全轉殖乙份 以下是簡單的例子 import copy class a def init self self.x 18 self.msg hello class b a def init self a....

設計模式之原型模式

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