《設計模式:可複用物件導向軟體的基礎》摘要(上)

來源:互聯網
上載者:User

標籤:

第一章 引言
1、什麼是設計模式?
設計模式是人們用來解決一些相似的問題和解決這類問題的核心方案。設計模式是用來實現設計複用的。
2、設計模式的四要素
名稱:描述模式的問題、解決方案和效果。名稱有助於人們之間交流設計思想和設計結果。
問題:描述了何時使用模式。它描述了設計問題以及問題存在的前因後果。
解決方案:描述了設計的組成部分,以及它們之間的相互關係、各自的職責和協作方式。
效果:描述了模式應用的效果及使用模式應權衡的問題。
3、本書如何描述一種設計模式?
  從以下方面來描述:模式名稱和分類、意圖、別名、動機、適用性、結構、參與者、協作、效果、實現、程式碼範例、已知應用、相關模式。
4、設計模式怎麼樣解決問題
  1)尋找合適的對象。對象包括資料和對資料的操作。設計模式幫你確定並不明顯的抽象和描述這些抽象。
  2)決定對象的粒度。
  3)指定對象介面。介面是對象所提供的所有操作的集合。
  4)描述對象的實現。對介面編程,而不是對實現編程。
  5)運用複用機制。優先使用對象組合,而不是類繼承。
  6)關聯運行時刻和編譯時間刻的結構。
  7)設計應支援變化。一般會導致重新設計的因素:通過顯示地指定一個類來建立對象、對特殊環境的依賴、對硬體和軟體平台的依賴、對對象表示或實現的依賴、演算法依賴、緊耦合、通過產生子類來擴充功能、不能方便地對類進行修改。
5、怎樣選擇設計模式
這裡給出幾個不同的方法:
  1)考慮設計模式是怎樣解決設計問題的。
  2)瀏覽模式的意圖部分。
  3)研究模式怎樣互相關聯。
  4)研究目的相似的模式。
  5)檢查重新設計的原因。
  6)考慮你的設計中哪些是可變的。

第二章 執行個體研究
本章主要結合一個文字編輯器Lexi執行個體,來講了幾種設計模式的運用,已經為何選用這些設計模式。
如果沒有接觸過設計模式,咋一看這一章很難理解。可以先閱讀後面的章節,然後回頭看這一章,也許會有新的認識。

第三章 建立型模式
1、這些模式中的兩個主旋律:它們都將關於該系統使用哪些具體的類的資訊封裝起來;它們隱藏了這些類的執行個體是如何被建立和放在一起的。
2、abstract factory 抽象工廠
2.1 意圖:提供一個建立一系列相關或相互依賴對象的介面,而無需指定它們具體的類。工廠類建立介面,子類實現介面。
2.2 在以下情況下可以使用abstract factory模式:
  1)一個系統獨立於它的產品的建立、組合和表示時。
  2)一個系統要由多個產品系列中的一個來配置時。
  3)當你要強調一系列相關的產品對象的設計以便進行聯合使用時。
  4)當你提供一個產品類庫,而只想顯示它們的介面而不是實現時。
3、builder 產生器
3.1 意圖:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
3.2 在以下情況使用該模式:
  1)當建立複雜物件的演算法應該獨立於該對象的組成部分以及它們的裝配方式時。
  2)當構造過程必須允許被構造的對象有不同的表示時。
3.3 與abstract factory的區別:build模式著重於一步步構造一個複雜物件,在最後一部返回產品;abstract factory著重於多個系列的產品對象(簡單的或是複雜的),產品是立即返回的。
4、factory method Factory 方法
4.1 意圖:定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類。該模式使一個類的實現延遲到其他子類。
4.2 在以下情況下可以使用該模式:
  1)當一個類不知道它所必須建立的對象的類的時候。
  2)當一個類希望由它的子類來指定它所建立的對象的時候。
  3)當類將建立對象的職責委託給多個協助子類中的某一個,並且你希望將哪一個協助子類是代理者這一資訊局部化的時候。
5、prototype 原型
5.1 意圖:用原型執行個體指定建立對象的種類,並且通過拷貝這些原型建立新的對象。
5.2 當一個系統應該獨立於它的產品建立、構成和表示時,要使用該模式,以及:
  1)當要執行個體化的類是在運行時刻指定時,例如,通過動態裝載,或者
  2)為了避免建立一個與產品類層次平行的工廠類層次時;或者
  3)當一個類的執行個體只能有幾個不同狀態組合中的一種時。建立相應數目的原型並複製它們可能比每次用合適的狀態手工執行個體化該類更方便一些。
6、singleton 單件
6.1 意圖:保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。
6.2 在下面的情況下可以使用該模式:
  1)當類只能有一個執行個體而且客戶可以從一個眾所周知的訪問點訪問它時。
  2)當這個唯一執行個體應該是通過子類化可擴充的,並且客戶應該無需更改代碼就能使用一個擴充的執行個體時。

 

《設計模式:可複用物件導向軟體的基礎》摘要(上)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.