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...