关于设计模式
整篇文章在開頭提出以下三個問題:
這里也放在最前面用于思考。
什么是設計模式?
模式是針對特定場景下的特定問題的可復用、可表達的解決方案。
面向模式設計是從分析到實現的設計模式,基于模式的分析使你成為一個更有力、更高效的分析者,因為它們讓你更抽象的處理你的模型;其幫助人們學習面向對象的原則,幫助解釋“為什么我們要這樣處理這些對象” 使用模式的觀念:如何使用模式來理解問題(概念)領域,而不僅僅在理解問題領域后使用模式來完成一個設計。
程序設計的錯誤思路:先創建問題領域中的類,然后將這些類縫合起來組成最終的系統。?
為什么要使用設計模式?
研究使用設計模式和面對對象編程的最本質原因是:需求中存在變化的部分。
根本目的是:更好的復用我們的代碼解決實際需求中的問題,OO達到可復用、可擴展、易維護的目的。
先學習兩個概念,所有程序設計中都要求的基本原則之一:高內聚,低耦合。
- 內聚度:程序內操作之間的聯系緊密的程度,描述一個子程序內部成分之間相互聯系的強度
- 耦合度:程序之間的聯系緊密的程度,描述一個程序與其他程序之間的相互聯系的強度
使用功能分解的方式設計程序,變化的需求分讓我們的程序和維護成本大大增加(因為一個函數或數據結構的變化會影響其他的函數和數據,于是受影響的部分也得修改,這種滾雪球似的使bug增加) ?
面向對象設計的要點?
好的調度或控制程序關注能做什么,不關心怎樣去做,將職責分配下去 對象是一個擁有行為動作和自我狀態的東西 對象的好處:可以定義自己負責的東西。 好的設計原則:對象對自己負責,并且這種責任應該被明確的定義出來 觀察對象的視角:
- 概念視角:抽象建模
- 規格視角:有哪些能力
- 實現視角:怎樣實現
封裝帶來的優勢:
- 讓對象為自己的行為負更多的責任,控制程序負擔的責任就越少
- 封裝讓一個對象內部狀態和行為的變化對對象調用者透明
- 封裝幫助我們避免因需求變化帶來的bug的影響
?
模式之間的關系?
一般來書,要構建一個系統,你需要將很多模式結合起來使用。不同的設計者可能會使用不同的模式來解決同一個問題。通常:
- 很多模式通常可以很好的相互結合
- 一個模式可能會依賴與另一個
- 一些模式是類似的,都是可選的
- 模式是易于發現和描述的
- 模式不是方法或框架
- 模式為你提供解決問題的高效方案
? ? ?
轉載于:https://www.cnblogs.com/oubo/archive/2012/02/02/2394627.html
總結
- 上一篇: 教授称学习习惯的常识都是错误的
- 下一篇: Adobe Flash Player(F