嗨 大家好 我是一路爬坡的阿肥
今天開始跟著阿肥不間斷爬坡吧!
四年前有個剛畢業的菜逼八,帶著「WEB前端就是網頁設計」的認知,傻傻地進到業界。不過幸好,第一個禮拜就被矯正了這種認知。
因為他上工做的第一件事情就是:讀完《JavaScript 設計模式 (JavaScript Patterns)》
這位菜逼八翻著翻著讀著讀著便開始惶恐與懷疑人生:「
阿~想在技術領域混口飯吃真難:(
看不懂的話就不能寫程式了嗎QQ?
」
現在看來是過慮了,因為他現在還好好地在這裡,摩拳擦掌地挑戰今年的鐵人賽。
不過,如果重頭回到那一天,阿肥我應該會跟主管說:「主管,在讀這本前,請先給我三個月的時間,讓我從頭開始開發個小專案。如果真完成了,也過試用期了,再讓我慢慢讀這本吧!」
這時候我只能說:
沒那麼簡單 就能去愛 別的全不看
─《沒那麼簡單》
首先,我們從維基先了解設計模式的定義:
在軟體工程中,設計模式是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案...
描述在各種不同情況下,要怎麼解決問題的一種方案。
在許多技術領域中,一個新問題浮現後,會先嘗試現有的思維或技術來解決。但是同樣的問題出現愈多次時,就會想辦法去歸納、簡化和有系統性的重構解決方案,讓其他人遇到同樣的問題時,能夠依循一套準則來解決。
如果沒有遇到問題過,或甚至根本沒開發經驗,其實會很難理解每個設計模式背後的緣由,什麼場合可以運用,要搭配什麼語法才能實現...等等。
因此,阿肥希望零開發經驗的讀者,可以先在公司累積些經驗,或是自己完成一個side project,這樣對於接下來設計模式的演示才會比較好理解喔!
在軟體工程中,眾多的設計模式可以分為以下三類:
物件可以簡單到只有一兩個屬性,但也可以複雜到擁有多個屬性、多個操作方法,甚至還有自己的業務邏輯等等。如果靠單純的建立方式,可能會有設計上的問題與複雜度的提升。因此建立型模式可以規範建立的方式來解決問題。
建立型模式主要有重點:
隨著系統的複雜度提升,物件或類別之間就須透過某種溝通和結合的方式,像是做木工一樣,只要做出合適的卡榫,就能形成功能更強大的結構。
一個系統的運作就像一個國家一樣,除了有各種角色以外,還要透過經濟活動、法律、文化、道德觀等等社會機制,決定每個角色應該要做什麼?應該要如何跟其他角色交流等行為。行為型模式就像這些社會機制,為類別或物件們提供各種溝通與交互作用的方式。
如同今天的標題, 當有人說要一天上手設計模式時,我會給他一抹淺淺的微笑,並且跟他說:「孩子,不要著急,你先每天看阿肥的文章。30天後再等你的好消息:)」