## 連載:面向對象葵花寶典:思想、技巧與實踐(25) - 類模型
面向對象設計和彈吉他差不多,有很多成熟的理論和技巧,學會彈吉他并不難,你只需要應用這些理論和技巧即可!
**【師傅領進門,修行在個人】**
“類模型”是整個面向對象設計模型的核心,是面向對象設計階段的主要輸出,也是設計師們最能夠發揮自己才能的地方。
?
雖然“類模型”如此重要,但面向對象設計技術經過幾十年的發展后,目前已經形成了很成熟的一套體系,因此真正在進行“類模型”設計的時候,其實難度并不高,這也是多虧了眾多前輩們的無私貢獻,才能使得我們這些蕓蕓眾生也能輕松掌握這些原本帶有藝術色彩的技能。
?
不過話又說回來了,入門容易精通難,“類模型”的設計也是如此,雖然有前輩們各種各樣的思想結晶指導著我們,但畢竟如何理解、如何應用這些思想結晶,還是要看個人的領悟力和把握力。就像同樣的《葵花寶典》,岳不群看了創立了氣宗,蔡子峰看了創立了劍宗,渡元禪師聽了后悟出了辟邪劍法,東方不敗看了竟然練出了繡花針絕技!所以接下來的內容,也只是“師父領進門,修行在個人”,如果希望做出優秀的設計,更多還是依靠個人的領悟和實踐!
?
**【設計的魔法崇拜】**
面向對象類的設計很多時候都蒙上了一層神秘的面紗。一個常見的場景是:“設計師”拿到需求后,經過一段時間的設計,感覺就像變戲法一樣,然后就拿出了一個類模型。普通的開發人員看到這樣的類模型,很難想象如何從需求才能夠得到了這些類,由于大部分公司的設計人員確實也都是公司里面的牛人,因此大家就自然而然地認為這是水平和創造力的表現,心底不由得產生由衷的贊嘆:“牛逼啊!”
?
我稱這種現象為設計的“魔法崇拜”,具體表現就是認為設計是一種魔法,做設計的人是魔法師,只有牛逼的人才能夠做設計。
?
但這種認識并不準確,就像我們前面提到的,面向對象領域已經發展了幾十年,各種思想、理論都已經基本成熟,絕大部分人在做設計的時候,都不可能有什么天才的創新或者天才的靈感,而只是這些已經成熟的思想和理論的應用而已。
?
之所以現在還會出現這種現象,主要原因還是在于各種思想、理論、方法都是針對具體問題的分析或者總結,但并沒有誰明確的將這些東東形成一套完整的面向對象設計體系。
?
可能很多人都有這種感覺:面向對象我也懂,設計模式我也知道,設計原則我也明白,但真的要進行設計的時候,就不知道如何下手了,比如說:
對象從哪里來?
什么時候用設計模式?
如何判斷設計是否正確?
什么樣的設計才是優秀的設計?
。。。。。。。。。。。
?
正因為存在這樣的原因,我們自然會對那些能夠設計出完整的類模型的設計師們刮目相看了。
?
其實面向對象設計并不是什么高深的技術,也不需要天才的創新,更不需要變魔法,而是有章可循的,只要我們按照一定的步驟,一步一個腳印,不斷精益求精,就能夠完成面向對象的設計。
?
但正如前面提到的一樣,面向對象設計更多的時候是一門藝術。雖然我們按照一定的步驟能夠完成面向對象的設計,但在這些步驟實施的過程中,如何應用相關技術,如何做出設計選擇等,更多時候是帶有藝術色彩的。就像很多人都會彈吉他,但真正的吉他大師彈出來的感覺,肯定和一個普通人彈的不一樣。
接下來我們將會分幾個小節講述如何進行面向對象的類設計:
第一步(照貓畫虎):領域類映射 --- 告訴你類從哪里來
第二步(精雕細琢):應用設計原則和設計模式 ? ---告訴你如何設計“好”類
第三步(照本宣科):拆分輔助類 ? ---告訴你如何和你的開發框架結合起來
- 前言
- (1) - 程序設計思想的發展
- (2) - 面向對象語言發展歷史
- (3) - 面向過程 vs 面向對象
- (4) - 面向對象是瑞士軍刀還是一把錘子?
- (5) - 面向對象迷思:面向對象導致性能下降?
- (6) - 不要說你懂“類”
- (7) - “對象”新解
- (8) - “接口” 詳解
- (9) - “抽象類” 詳解
- (10) - “抽象” 詳解
- (11) - “封裝” 詳解
- (12) - “繼承” 詳解
- (13) - “多態” 詳解
- (14) - 面向對象開發技術流程
- (15) - 需求詳解
- (16) - 需求分析終極目的
- (17) - 需求分析518方法
- (18) - 用例分析
- (19) - 功能點提取
- (20) - 用例圖的陷阱
- (21) - SSD
- (22) - 領域模型
- (23) - 領域建模三字經
- (24) - 設計模型
- (25) - 類模型
- (26) - 類模型三板斧
- (27) - 動態模型設計
- (28) - 設計原則:內聚&耦合
- (29) - 高內聚低耦合
- (30) - SRP原則
- (31) - OCP原則
- (32) - LSP原則
- (33) - ISP原則
- (34) - DIP原則
- (35) - NOP原則
- (36) - 設計原則如何用?
- (37) - 設計模式:瑞士軍刀 or 錘子?
- (38) - 設計模式之道
- (39) - 設計原則 vs 設計模式
- (40) - DECORATOR模式
- (完)- 書籍已經出版