設計模式15問

2021-06-18 04:56:58 字數 2056 閱讀 1564

›  優秀的設計範例

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

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

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

›  物件導向設計的框架

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

›  新發明的創新思路和方法

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

›  一門物件導向的程式語言

›  一些物件導向的基本概念

›  一些基礎的uml類圖知識

›  模式命名的目的是交流

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

›  分類不重要

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

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

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

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

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

›  設計原則是設計模式之魂

›  這些原則主要包括:單一職責原則srp、開發關閉原則ocp、依賴倒置原則dip、介面隔離原則isp、黎克特制替換原則lsp、合成利用原則carp

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

›  模式是為了解決問題,而不是讓我們按它的類圖來實現**

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

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

›  勤於思考,加強理解

›  在小範圍**中有意識的選擇模式使用

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

›  循序漸進

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

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

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

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

›  可以肯定的回答「有」

›  會引入更多的抽象層次

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

›  會讓人走火入魔

›  ……

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

›  瀏覽模式的意圖部分

›  研究目的相似的模式

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

›  明確模式的負面效應

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

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

›  看**示例

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

›  定義類及介面,建立它們的關係,定義代表資料和物件引用的例項變數。

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

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

›  模式不能解決所有問題

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

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

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

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

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

設計模式(15) 迭代器模式

迭代器模式 iterator pattern 是一種非常常用的設計模式。這種模式用於順序訪問集合物件的元素,不需要知道集合物件的底層表示。一共四個角色 迭代器角色 iterator 迭代器角色負責定義訪問和遍歷元素的介面 具體迭代器角色 myiteraror 具體迭代器角色實現了迭代器介面,並需要記...

設計模式 1 5原型模式

原型模式 prototype 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式其實就是從乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。對於.net而言,那個原型抽象類prototype是用不著的,因為轉殖是在是太常用了,所以.net在system命名空間中...

設計模式 15 模板方法模式

1.概述 定義乙個操作中的演算法的骨架,而將步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義演算法的某些特定步驟。2.模式中的角色 2.1 抽象類 abstractclass 實現了模板方法,定義了演算法的骨架。2.2 具體類 concreteclass 實現抽象類中的抽象方法...