正在看設計模式解析,希望這本書能對我有幫助
花了2周看完了,以下是學習筆記:
第1章 面向對象泛型
1、 面向對象考慮問題的三個視角:概念、規約、實現。
概念:抽象類(接口),泛指某種類型。
規約:類的成員函數,及其參數表。
實現:成員函數的實現。
2、 封裝一般意味着各種隱藏。例如,抽象類隱藏子類的具體類型。
3、 功能分解一般是結構化程序員使用的方法,那我們設計階段(概要設計、詳細設計)的功能分解是否不正確?
4、 對象自己負責自己。個人理解:對象不需要進行某種特殊的初始化,就能正確使用。
5、 P17的主程序,負責協調各個功能對象。
第4章 標準的面向對象解決方案
1、 這章的解決方法和我們的方法驚人的相似:雖然可以在不改變已有系統的情況下添加新功能,但是造成了類爆炸。
第8章 開拓視野
1、 對象是具有責任的一個實體。
但是我不清楚如何“劃分”對象,比如劃分成校驗類、下發類、解析類、數據庫類,這些似乎也能被看成一個個有責任的實體。但是“直覺”告訴我,這樣似乎不對,也許壓根就不應該做劃分。
2、 封裝應該被視爲“任何形式的隱藏”,包括:
1)實現細節
2)派生類
3)設計細節
4)實例化規則
3、 將封裝看成是通過抽象類或者接口隱藏類。
4、 共通的概念將用抽象類表示。可比性分析所發現的變化將通過具體類(也就是從抽象類派生而來的具有特定實現的類)實現。
5、 在創建對象時使用共性和可變性分析更好。
第9章 Strategy模式
1、 假設變化將會出現,並嘗試預測其出現的位置。
2、 考慮設計中什麼應該是可變的。它不是考慮什麼會迫使設計發生改變,而是考慮什麼能夠在不引起重新設計的前提下改變。
第10章 Bridge模式
1、 用對象的職責而不是其結構來思考問題。
2、 “爲每種變化使用不同的特化”(繼承)到“將變化轉移到使用或擁有這種變化的對象中”(組合)的轉變。
第13章 用模式結局CAD/CAM問題
1、 用模式思考的過程。
1)找出模式。
2)分析和應用模式。
2a、按背景的創造順序將模式排序。
原則:先考慮系統中需要什麼,然後再去關注如何創建它們,即工廠模式是最後要考慮的
2b、選擇模式並擴展設計。
2c、找到其他模式。
2d、重複。
3)添加細節。
第15章 共性與可變性分析
1、 開發人員需要一種方式,首先弄清有些什麼東西,然後再嘗試找到它們之間的關係。
第16章 分析矩陣
1、 用行發現規則。
用列發現特定情況。
2、 關於客戶:
他們會談的非常具體;它們經常用“總是”表達“通常”,用“從不”表達“很少”。
第17章 Decorator模式
1、 用工廠來生產有特定裝飾的對象。
第18章 Observer模式
1、 如果一個要成爲觀察者的類已經存在,則可以使用Adapter模式進行轉換:
第21章 Singleton模式和Double-Checked Locking模式
1、 在多線程應用程序中,Singleton對象通常必須是線程安全的,有狀態Singleton應該謹慎使用(看看那個SFACTORY的實現)。
第24章 工廠模式的總結
1、 創建和使用對象的三個主要任務:
1)根據所履行的責任找出對象。
2)決定如何使用這些對象。
3)決定如何管理這些對象。
2、 對於系統中的任意兩個實體A和B,應該將它們之間關係限制爲A使用B,或者A創建/管理B。
第25章 設計模式回顧:總結與新起點
1、 這個模式隱藏了什麼實現?這樣我們就可以修改它。
2、 它如何將問題域分解爲多個責任。(解析、下發、DB?)