《揭開設計模式的秘辛》作者John Vlissides,是軟體設計模式的創始GoF(Gang of Four)四位成員之一,我們現在在網路上學習的很多Design Pattern,都是出至於GoF的23個設計模式應用與延伸,是個大師級的人物。
如果是第一次聽到「Design Pattern」這名詞,那這本書就建議直接跳過了,這本書比較適合給專案中已經有在使用Design Pattern,並且思考如何進展到下一個階段,了解每個Pattern設計背後含意的人。
本書在於思考的昇華,還有介紹兩個不在23個模式中的Design Pattern,在第二章節還有一個較大型的設計範例,讓讀者不會只圍繞一個Design Pattern學習,而是用全部的Design Pattern去思考。
網路上對於Design Pattern的教學有很多,這裡想要分享的不是如何使用,而是著重在「對模式的十大誤解」與「有效率的模式編寫者的7個習慣」。
就我個人使用的經驗,之前最常用到的不外乎是單例模式 (Singleton)與工廠方法模式 (Factory Method Pattern),當然,Design Pattern有趣的地方就是,當你用對地方,他可以幫你解省非常多的時間。
所以,Design Pattern並不是直接用來完成程式碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種「方案」。
如果你問為什麼要使用Design Pattern?我認為是為了建立一個方便維護及擴充的軟體系統。
而在學習Design Pattern前,除了要對Coding有一定的基礎外,像UML的應用與Class diagram也要有基本的認識,這樣你才有辦法看懂別人在描述的各種模式架構。
💡 Class diagram describes the structure of a system by showing the system’s classes, their attributes, operations (or methods), and the relationships among objects.
書中第一章內容作者澄清對設計模式常見的十大誤解。
誤解1:模式就是再一種場合下,對某個問題的一個解決方案。
作者認為除了解決方案之外還要需要三樣東西。
誤解2:模式只是行話、規則、程式設計技巧、資料結構…..
誤解3:看到冰山的一角,就等於看到了整座冰山。
避免以偏概全,不可以用少數例子就對模式下一個籠統的結論。
誤解4:模式需要工具或方法的支援才能生效。
模式的優點來自於對模式本身的應用,不需要任何形式的支援。
模式的四個主要優點:
誤解5:模式可以保證軟體的耐用、更高的生產率….
模式是要開發人員軍火庫中其中一項武器。
誤解6:模式可以產生整體架構
模式與生產能力無關,使用者必須運用自己的創造力來填補各種模式之間的空白地帶。
誤解7:模式只用在物件導向設計或實作
模式是一種用來記錄和傳播專家經驗的工具,不會只有用在物件導向。
誤解8:沒有證據顯示模式對任何人有幫助
已經存在許多設計模式有益的結果。
誤解9:模式族群是一群由精英分子組成的小幫派
設計模式充滿多樣性,只要有心每個人都可以使用設計模式。
誤解10:模式族群是為自己服務的,甚至是不懷好意的。
作者認為這7個習慣是在多年編寫模式的過程中養成的,而且多半是無意識養成的。認真培養並遵循這些習慣,必定會對於自己的模式編寫能力有很大的提升。
模式是在某種場合下,對某個問題的一個解決方案的一種結構化展現。作者希望我們在寫Code之餘,要能再多花點時間紀錄開發歷程,不管是透過Blog或是任何形式,將累積的經驗逐漸紀錄下來。透過不斷的回顧反思,會讓你在累積技術的道路上提煉出更很多的智慧寶藏。
如果以初學Design Pattern,個人蠻推薦看《深入淺出-設計模式》,這本書可以讓初學者透過書上的實作慢慢地去理解,去想像Pattern的使用時機,以漸進式的方法讓讀者知道每個Pattern使用時機。
而進階點可以參考《設計模式的解析與活用》,這本設計模式的解析與活用它會強調使用的時機,並且深入的解析Pattern的使用時機,還有帶領開發者們從Code的層面變成從Pattern的層面去設計。
Design Pattern使用的好,可以節省一個團隊很多未來的麻煩(技術債!!!),而模式的使用並不是絕對與唯一,模式背後的 OOP 原則如果就能夠精準且保有彈性的解決問題,未必要加入模式讓專案變得複雜。
#閱讀筆記 #B047