這回小菜準備去應聘了 , 大鳥看了小菜的簡歷後感覺他都是在瞎扯 . 小菜準備了很多份相同的簡歷 . 於是大鳥便讓小菜同學通過編寫**來實現相同的三份簡歷 .
不久後小菜實現了第一版的** .
#include
class resume
void setpersonalinfo(char* _***,char* _age)
void setworkexperience(char* _timearea,char* _company)
void display()
protected:
char* name;
char* ***;
char* age;
char* timearea;
char* company;
}; int main()
大鳥看後說到 :」 三份簡歷需要三次初始化 , 這樣客戶端的**很麻煩 , 如果要二十份那就要二十次初始化 .」
小菜答到 :」 是的 . 如果寫錯了乙個字那就要改二十次 .」
於是大鳥便叫小菜用原型模式重寫了一遍** .
通過給出乙個原型物件來指明所要建立的物件的型別,然後用複製這個原型物件的方法建立出更多同型別的物件。原始模型模式允許動態的增加或減少產品類,產品類不需要非得有任何事先確定的等級結構,原型模型模式適用於任何的等級結構。缺點是每乙個類都必須配備乙個轉殖方法。
依賴關係的倒置
抽象不應該依賴於實現細節,實現細節應該依賴於抽象。
(1)抽象a直接依賴於實現細節b(軟體易脆,很容易需要重新編譯)
(2)抽象a依賴於抽象b,實現細節b依賴於抽象b
動機(motivation)
在軟體系統中,經常面臨著「某些結構複雜的物件」的建立工作;由於需求的變化,這些物件經常面臨著劇烈的變化,但是它們卻擁有比較穩定一致的接 口。如何應對這種變化?如何向「客戶程式(使用這些物件的程式)」隔離出「這些易變物件」,從而使得「依賴這些易變物件的客戶程式」不隨著需求改變而改 變?
意圖(intent)
使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件
——《設計模式》gof
在spring中.深度科隆是應用廣泛的。在實體模型上面有這樣乙個註解:@component("lawsuitarchive") @scope("prototype"),表明在別的地方應用的時候,是引用其原型,同時entity也要實現cloneable介面和複寫clone()方法。因為原型在初始化的時候就已經建立了一部分有價值的東西,減少容器的壓力,而在別的地方,例如action中引用該物件的時候,直接可以使用@resource(name="lawsuitarchive")引用物件,spring會自動的裝配好你想要的物件。
大小: 8.4 kb
大小: 11.8 kb
大小: 27.8 kb
原型模式(ProtoType)
1.目的 當需要從乙個物件copy出另外乙個物件時,可以使用原型模式,本質上是呼叫的copy建構函式 與copy建構函式的區別,可能就是不需要顯示的生成物件,而是通過函式呼叫 2.prototype.h ifndef prototype h define prototype h include in...
Prototype 原型模式
prototype 原型模式 所謂原型模式,就是可以根據乙個原型,快速建立出其拷貝。如 int a 1 int b new int a a cout a endl cout b endl 輸出結果 2 1 上面就使用了原型模式。根據原型a,快速建立出了a的拷貝b。同時,b儲存了a當時的狀態。當a之後...
原型模式 Prototype
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式是一種建立型設計模式,它允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是通過將乙個原型物件傳給那個要發動建立的物件,這個要發動的物件通過請求原型物件拷貝它們自己來實施建立。現實很殘酷,都第9章了...