6 Prototype原型(建立型模式)

2022-02-25 10:59:21 字數 2031 閱讀 8062

6. prototype

原型(建立型模式)

李建忠上海祝成科技 高階培訓講師

依賴關係的倒置

抽象不應該依賴於實現細節,實現細節應該依賴於抽象。–抽象

a直接依賴於實現細節

–抽象a依賴於抽象

b,實現細節

b依賴於抽象

動機(motivation

)在軟體系統中, 經常面臨著

「某些結構複雜的物件「的建立工作; 由於需求的變化, 這些物件經常面臨著劇烈的變化,但是它們卻擁有比較穩定一致的介面。

如何應對這種變化?

如何向「

客戶程式(使用這些物件的程式)

」隔離出

「這些易變物件

」, 從而使得

「依賴這些易變物件的客戶程式

」不隨著需求改變而改變?

意圖(intent

)使用原型例項指定建立物件的 

種類, 然後通過

拷貝這些原型來建立新的物件。

——《設計模式》

gof結構(

例說prototype

應用codes in vs.net

prototype

模式的幾個要點

• prototype

模式同樣用於

隔離類物件的

使用者和

具體型別

(易變類) 之間的耦合關係,它同樣要求這些

「易變類」擁有

「穩定的介面」

。• prototype

模式對於

「如何建立易變類的實體物件」採用

「原型轉殖

」的方法來做, 它使得我們可以非常靈活地動態建立

「擁有某些穩定介面

」的新物件

——所需工作僅僅是

註冊乙個新類的物件(即原型),

然後在任何需要的地方不斷地

clone

。• prototype

模式中的

clone

方法可以利用

.net

中的object

類的memberwiseclone()

方法或者

序列化來實現深拷貝。

有關建立性模式的討論

• singleton

模式解決的是

實體物件個數

的問題。 除了

singleton

之外, 其他建立型模式解決的都是

new所帶來的耦合關係

。• factory method, abstract factory, builder

都需要乙個額外的工廠類來負責

例項化「

易變物件

」, 而

prototype

則是通過原型(乙個特殊的工廠類) 來轉殖「

易變物件」。

•如果遇到

「易變類」, 

起初的設計通常從

factorymethod

開始,當遇到更多的複雜變化時, 再考慮重構為其他三種工廠模式(

abstract factory,builder

,prototype

)。推薦參考書

•《設計模式: 可復用物件導向軟體的基礎》

gof•

《物件導向分析與設計》

grady booch

•《敏捷軟體開發: 原則、 模式與實踐》

robert c. martin

•《重構: 改善既有**的設計》

martin fowler•《

refactoringto patterns

》joshua kerievsky

設計模式 原型模式Prototype(建立型)

一 原型模式 用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。原型模式實現的關鍵就是實現clone函式,還需要實現深拷貝。二 uml類圖 三 例子 父類class resume virtual resume virtual resume clone virtual void set c...

ProtoType 原型) 物件建立型模式

1.意圖 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。2.動機 通過拷貝或者 轉殖 乙個類的例項來建立新的例項。3.適用性 當乙個系統應該獨立於它的產品建立 構成和表示時,要使用prototype模式 以及 4.結構 5.例項 prototype.h prototypefacto...

建立型模式 原型模式 prototype

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。main.cc include include software computer.h design pattern prototype for example,the company to employees with compute...