設計模式可複用物件導向軟體的基礎(1)–圖例

來源:互聯網
上載者:User

開始學習 設計模式, 從網上下了個《設計模式可複用物件導向軟體的基礎》,看了引言,發現自己以前寫過那麼多自以為不錯的代碼,但用設計模式的思想來看,全都是垃圾!!

看來要好好充電了。千裡之行,始於足下,先把設計模式的圖例總結一下:  

圖例:
  1).執行個體化
  中的虛箭頭線表示一個類執行個體化另一個類的對象,箭頭指向被執行個體化的對象的類。
  
  2).繼承
  我們以豎線和三角表示子類別關係,
  如所示。
  
  3). 抽象類別
  抽象類別的類名以斜體表示,以與具體類相區別。抽象操作也用斜體表示。圖中可以包括實現操作的虛擬碼,如果這樣,則代碼將出現在帶有折角的框中,並用虛線將該折角框與代碼所實現的操作相連,圖示如下。
  
  4). 混入類(mixin class)
  混入類(mixin class)是給其它類提供可選擇的介面或功能的類。它與抽象類別一樣不能執行個體化。混入類要求多繼承,圖示如下。
  
  5). 委託
  委託(delegation)是一種組合方法,它使組合具有與繼承同樣的複用能力[ Lie86, JZ91]。在委託方式下,有兩個對象參與處理一個請求,接受請求的對象將操作委託給它的代理者(delegate)。這類似於子類將請求交給它的父類處理。使用繼承時,被繼承的操作總能引用接受請求的對象,C++中通過this成員變數,Smalltalk中則通過self。委託方式為了得到同樣的效果,接受請求的對象將自己傳給被委託者(代理人),使被委託的操作可以引用接受請求的對象。
  
  箭頭線表示一個類對另一個類執行個體的參考關聯性。引用名是可選的,本例為“rectangle”。
  6). 彙總(aggregation)和相識(acquaintance)
  彙總意味著一個物件擁有另一個物件或對另一個物件負責。一般我們稱一個對象包含另一個對象或者是另一個對象的一部分。彙總意味著彙總對象和其所有者具有相同的生命週期。
  相識意味著一個對象僅僅知道另一個對象。有時相識也被稱為“關聯”或“引用”關係。相識的對象可能請求彼此的操作,但是它們不為對方負責。相識是一種比彙總要弱的關係,它只標識了對象間較鬆散的耦合關係。
  在中,普通的箭頭線表示相識,尾部帶有菱形的箭頭線表示彙總:
  
  C++中,彙總可以通過定義表示真正執行個體的成員變數來實現,但更通常的是將這些成員變數定義為執行個體指標或引用;相識也是以指標或引用來實現。從根本上講,是彙總還是相識是由你的意圖而不是由顯式的語言機制決定的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.