1.物件
是獨有定義良好責任的東西,物件應該對自己負責,自己的事情自己幹!
◆例子: 當我們需要定義乙個類的責任的時候我們需要考慮這個類是不是應該有這些責任。比如有乙個teacher類。teacher有下面的責任:教書,科研等。現在我們有student類,那麼他的責任有:學習等,那麼現那麼現在當teacher有一件事情要宣布的時候,比如:現在到另外乙個地方去機上操作。那麼這個責任應該是teacher的呢,還是student的?我們應該思考,我們將會構建的teacher這個類是不是應該有責任去告訴學生到某個地方上機呢?
inte***ce teacher
inte***ce student
當你在封裝這個物件的時候,假設我們有不同的student,我們有graduated & regular student.並且他們對去機上操作有不同的處理邏輯。那麼notifystudents()是不是應該知道student的資訊呢?恩乙個物件需要知道另外乙個物件的資訊才能知道如何例項化,這是違背oo design的。那麼實際上我們應該由學生自己來負責這個責任,學生有責任知道自己怎麼去機上操作,怎麼操作等,也有責任去實現自己的工作。
改後的封裝:
inte***ce teacher
inte***ce student
2.封裝
封裝不是僅僅是狹義上的實現資料的隱藏。封裝還包括下面的性質:
※資料的隱藏。
※類隱藏(隱藏在抽象類和介面背後)。
※實現隱藏。比如我們的adapter pattern,在系統中應用他也是把adapter隱藏起來。
好處,開發者可以很輕鬆的對系統進行的實現進行擴充套件,因為原來的實現對開發者而言是不可見的,擴充套件不會對原來的系統造成影響,符合ocp原則。
3.發現並封裝變化點--使用共同點/變化點分析抽象出行為和資料中的變化點。
allan認為對乙個問題的分析應該分為三個層面,從三個視角去看
●概念視角--我們對問題領域的理解,上面的:我們需要實現教室教學和科研,學生學習和機上操作。
●規格視角--類。
●實現視角--資料和方法。
概念視角定義我們物件必須做什麼,實現視角是我們有足夠資訊之後的實現,而規格視角是我們聯絡概念視角和實現視角的橋梁,定義了概念視角對外的介面。
與抽象類的對映
討論抽象類-->核心概念約束
抽象類表現與所有派生類**在一起的概念,這個概念定義了派生類的共同點。
共同點-->抽象類使用
共同點定義了我們的抽象類
變化點-->抽象類的派生類
變化點定義了我們的派生類
規格-->抽象類的介面
在概念層次與抽象對應的介面
4.針對介面進行設計。
5.把繼承考慮為一種封裝變化的方法,而不是為物件製造特例情況。
more important!
6.講變化點封裝在乙個類中,並使之與這個類中其它變化點相分離。
7.力求松耦合。
8.力求高內聚。
9.絕對細心地使用"一次並僅有一次"規則。
10.優先使用物件組合而不是繼承。
未完--待補充!
《設計模式精解》書評摘錄
我買這本書英文本版。這本書比 設計模式 一書容易理解.本書開頭有些章節很精采.bridge 模式講很好。正在看,感覺對設計模式的講解深入淺出,非常適合我等初窺設計模式門徑的人。我花了一周的空餘時間,讀完了此書 如果讓我讀英文原版,恐怕要2周,而且收穫恐怕也不會像現在一樣深刻 感覺書非常適合剛剛學習 ...
設計模式精解 第五章 設計模式簡介
首先,設計模式和物件導向設計是互為補充.對於設計模式的資料,看上去抽象,甚至比較哲學.但是我們需要理解他們.要學習的是設計模式的思想.設計模式是從建築學和人類學發展起來的.這兩者都認為 美 的,優秀的設計是有客觀的標準的.christopher alexander這個建築師對設計模式的研究起了很大的...
設計模式精講
c 實現設計模式 1 設計模式簡介 c 實現設計模式 2 模板方法 c 實現設計模式 3 strategy模式 c 實現設計模式 4 觀察者模式 c 實現設計模式 5 裝飾模式 c 實現設計模式 6 橋模式 c 實現設計模式 7 工廠模式 c 實現設計模式 8 抽象工廠模式 c 實現設計模式 9 原...