1. 程式人生 > >設計模式總結之Prototype Pattern(原型模式)

設計模式總結之Prototype Pattern(原型模式)

目錄

建立型設計模式: 結構型設計模式: 行為型設計模式:

Prototype Pattern(原型模式)

意圖

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

適用性

•當要例項化的類是在執行時刻指定時,例如,通過動態裝載;
•為了避免建立一個與產品類層次平行的工廠類層次時;
•當一個類的例項只能有幾個不同狀態組合中的一種時。建立相應數目的原型並克隆它們可能比每次用合適的狀態手工例項化該類更方便一些。

結構

 
參與者:
• Prototype(原型) 
— 宣告一個克隆自身的介面。
• ConcretePrototype(具體的原型) 
— 實現一個克隆自身的操作。 
• Client(場景) 
— 讓一個原型克隆自身從而建立一個新的物件。 


例子

阿諾斯瓦辛格主演的《第六日》2000上映。主角叫亞當,來之聖經:上帝在第六日創造了亞當。
在不遠的將來,牛、魚甚至寵物都可以任意克隆,但克隆人類是非法的。但有一天當亞當-吉布森回到家,卻發現一個克隆人取代了自己。他被趕出了家門,更遭的是,陰謀的製造者為了掩蓋真相,派出殺手追殺亞當滅口。為了逃生,同時也為了重新贏得自己的一切,亞當同神祕的幕後策劃者展開了機智的戰鬥。


 

優缺點

優點:
效能優良。原型模式是在記憶體二進位制流的拷貝,要比直接new一個物件效能好很多,特別是要在一個迴圈體內產生大量的物件時,原型模式可以更好地體現其優點。


缺點:
逃避建構函式的約束。這既是它的優點也是缺點,直接在記憶體中拷貝,建構函式是不會執行的。優點就是減少了約束,缺點也是減少了約束,需要大家在實際應用時考慮。