設計模式15問

來源:互聯網
上載者:User
     
  • 設計模式是什嗎?

  優秀的設計範例

  從優秀設計方案中發現和總結出來的經驗

  在實踐中反覆出現的設計問題的優秀解決方案

  設計和開發人員相互交流的基本術語

  • 設計模式不是什嗎?

  物件導向設計的架構

  可供簡單組合的積木式的設計元件

  新發明的創新思路和方法

  解決物件導向設計問題的完整方案

  • 我想學習設計模式,需要具備什麼基礎呢?

  一門物件導向的程式設計語言

  一些物件導向的基本概念

  一些基礎的UML類圖知識

  • 那麼多模式,我連名字都記不住,怎麼學?

  模式命名的目的是交流

  記不住名稱並不影響對模式的學習,只是你在給別人講你的設計思路時要多囉嗦幾句而已

  • 模式又按目的分類,又按範圍分類,我搞不清楚,而且我認為有的模式在哪個類別中都有一定道理,到底要怎樣看待模式的分類呢?

  分類不重要

  已有的分類只是便於瞭解模式間的關係

  • 模式的類圖是一樣的,為何卻是兩種模式呢?

  類圖只是解決方案的表現形式

  模式的目的是解決某一特定的問題

  模式是根據其意圖命名,而不是解決方案的類圖

  • 這麼多種模式,它們有什麼共性嗎?

  模式的共性就是設計原則,模式是在設計原則的指導下將長期實踐的經驗整理下來形成的。

  設計原則是設計模式之魂

  這些原則主要包括:單一職責原則SRP、開發關閉原則OCP、依賴倒置原則DIP、介面隔離原則ISP、裡氏替換原則LSP、合成利用原則CARP

  • 我看到在實際代碼中的實現往往與書中的類圖不太相同,這是正確的使用模式嗎?

  實際的實現當中往往考慮了具體的邏輯環境而進行了微調,這個是合適的,也是提倡的

  模式是為瞭解決問題,而不是讓我們按它的類圖來實現代碼

  • 我看到別人的代碼既像這個模式又像那個模式,有時甚至是混在一起,這是怎麼回事呢?

  實際設計中,設計人員往往會進行設計折衷,模式的使用也往往會組合起來,或者進行一些簡化。

  要的不是模式本身,而是用模式解決實際問題。

  • 我負責的代碼有限,沒有機會做全域性的設計工作,我要怎樣學習和使用設計模式呢?

  勤于思考,加強理解

  在小範圍代碼中有意識的選擇模式使用

  向有經驗的同學請教用法是否合適

  循序漸進

  • 總體上說,感覺學習設計模式是一個長期的過程,我怎麼知道自己學到什麼程度了呢?

  可以將學習過程分為三個階段

  階段一學習一個模式並套用

  階段二發現模式的不適用性並調整

  階段三著眼於實際問題的解決,順其自然的使用模式

  • 設計模式有負面的作用嗎?

  可以肯定的回答“有”

  會引入更多的抽象層次

  會引入更多功能簡單的小類

  會讓人走火入魔

  ……

  • 我在選擇設計模式時要思考哪些問題?

  考慮設計模式是如何解決問題的

  瀏覽模式的意圖部分

  研究目的相似的模式

  考慮你的設計哪些是可變的

  明確模式的負面效應

  • 我要怎樣使用設計模式?

  弄清模式的意圖並特別注意其適用性部分和效果部分,確定它適合你的問題

  弄清結構、參與者和協作部分

  看程式碼範例

  選擇在應用上下文中有意義的模式參與者的名字。模式中的名字通常過於抽象而不會直接出現在應用中。

  定義類及介面,建立它們的關係,定義代表資料和對象引用的執行個體變數。

  實現執行模式中責任和協作的操作,程式碼範例部分的例子可以提供協助和指導。

  註:這些只對一開始使用模式起指導作用。以後會形成自己的使用方法。

  • 使用時還有什麼建議嗎?

  保持簡單(如果沒用模式解決某個問題,就不是經驗豐富的開發人員?)

  模式不能解決所有問題

  要知道何時需要模式(不僅是使用的時機,還有放棄的時機)

  重構是最好的使用模式的時機(重構就是為了改善結構,而不是改變行為)

  敢於放棄模式(放棄往往比拿起更難)

  如果現在不需要,就不要使用(抗拒誘惑,降低複雜度)

  設計模式不等同於軟體架構,但設計模式可以在架構進入更詳細的設計階段時發揮作用

 

 ——歡迎轉載,請註明出處 http://blog.csdn.net/caowenbin ——

聯繫我們

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