用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。通俗來說,原型模式就是從乙個物件,通過複製的手段去建立另外乙個物件,而且不需要知道任何建立的細節。
思考:這麼做有什麼好處?
角色說明
抽象原型類。宣告乙個轉殖自身的介面(抽象方法)
具體原型類。實現乙個轉殖自身的方法
讓乙個原型轉殖自身從而建立乙個新的物件
下面我們來看乙個建立顏色color物件的示例:
建立原型類color(本示例省略了抽象原型類,改用icloneable介面代替)
class color : icloneable
public object clone()
,,");
return this.memberwiseclone() as color;}}
建立原型管理器colormanager
class colormanager
set }}
客戶端向原型管理器註冊,獲取color物件,以及動態註冊原型
static void main(string args)
輸出結果
拷貝乙個物件時,僅拷貝物件的引用,拷貝的物件和源物件引用同乙份實體。也就是說,改變其中乙個物件會影響到另乙個物件的狀態。
拷貝乙個物件時,不僅拷貝物件的引用,還將物件引用的值一同拷貝。這樣拷貝的物件和源物件相互獨立,其中乙個改變不會影響另外乙個物件。
當乙個系統應該獨立於它的產品建立、構成和表示時,要使用prototype模式;以及
設計模式五 原型模式
建立型模式最後一種 原型模式 一般用於框架 或者稱為轉殖模式 使用場景 當物件建立比較繁瑣 耗時 或者有訪問許可權的時候 可以使用原型模式 以某個物件為原型 複製出新的物件 不同於new 實現 實現cloneable 介面和重寫clone方法 記憶體賦值 public class sheep imp...
設計模式學習 五 原型模式
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。prototype原型模式是一種建立型設計模式,prototype模式允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷...
PHP設計模式系列(五) 原型模式
原型物件,用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式就是clone就是記憶體拷貝,比new的好處是建立物件快速,適合大物件建立。原型模式與工廠模式作用類似,都是用來建立物件 與工廠模式的實現不同,原型模式是先建立好乙個原型物件,然後通過clone原型物件來建立新的物件,...