“面向對象軟件設計”這個術語及其相關話題對於很多開發人員來說已經是耳熟能詳了,甚至聽膩了。但是,對不住各位,為了吸引眼球和引起“異性” 注意,本座還是落入俗套選擇這個熱門話題作為本博客的開張炒作篇目。請見諒,也希望各位看官能放下架子,略讀一下本系列的所有文章再噴,可贊可彈可BS, 但勿吐槽,畢竟不想因為本座的文字噪音降低看官的SZ,傷不起呀!!
言歸正傳,在如何闡述“面向對象軟件設計”這個問題上,本座琢磨了良久,畢竟命題寬泛,表達方式和層次多樣。最終決定用相對通俗,以本座的讀書和工作經歷,在中等層次上進行闡述。
本座從十年多前走出校門之時就確信軟件架構(設計)、數據結構和算法是軟件的根本核心,也是衡量個人技術水平的終極標准。因此,從一開始本座就特別關注軟件設計方面的知識,本座讀過的三本書恰巧體現了軟件設計開發的幾個方面:
- 編程開發:《Design Patterns Elements of Reusable Object-Oriented Software》
- 軟件設計:《Agile Software Development: Principles, Patterns, and Practices》
- 系統架構:《Pattern-Oriented Software Architecture》
若從編程開發的層次談軟件設計不夠全面,有只見樹木不見森林之嫌;而從系統架構的層次去談則顯得過於專業,受眾不多,會失去大部分讀者。因此本系列文 章通過本座多年前閱讀:《Agile Software Development》的筆記整理和心得體會來闡述面向對象軟件設計原則。
最后,本座要表達一個重要的觀點:任何知識的學習過程都要經歷“守”(依葫蘆畫瓢,獲得感覺)、“破”(掌握規律,懂得比較、選擇)、“離”(突破條框,自成一派,無招勝有招)三個階段,在學習的過程中不要墨守成規,需要結合實際情況不斷思考和提煉知識,突破自己。
- 自信來源於哪里?來源於掌握足夠多的知識。
- 求知欲望來源於哪里?來源於未掌握的知識。知識就像一個圓圈,掌握知識越多圓圈越大,圓圈越大則圈外的世界也越大。