iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
8
Software Development

什麼?又是/不只是 Design Patterns!?系列 第 1

混沌初開:學習設計模式(與更多)前的一些嘮叨

  • 分享至 

  • xImage
  •  

這是一個介紹設計模式 Design Patterns架構模式 Architectural Patterns 的系列文章。

什麼?又是 Design Patterns?

Design Patterns,這個聲名遠播的設計概念,在軟體設計的領域中,一直以來是不可或缺的基石。就算我們無意識地忽略它、有意識地迴避它,它都還是如影隨形地出現在各式各樣的角落。基本上,身為一個開發人員,尤其當我們使用物件導向開發時,我們跟 Design Patterns 的相遇就差不多已經命中注定了。

什麼?你說要學設計模式,為什麼不直接去看書就好了?現在市面上介紹 Design Patterns 的書一字排開,大概可以堆滿一個房間。輪得到我們介紹嗎?

很多時候我們看這些 Design Patterns 的教科書(下面會列出我們主要參考哪幾本書),總是會有些不甚明白,或是需要自己實作之後才能領會箇中道理的地方。這個系列的使命就是盡量使用淺顯易懂的方式,讓你看完這個之後,能夠起身大喊「噫!我中了」,彷彿自己也已經真正懂了 Design Patterns 一樣。

誰應該看?

如果你是個剛踏進軟體設計的新鮮的肝,從沒聽過什麼是 Design Patterns,恭喜你!今天(還有接下來的一個月)是你的好日子,我們來一起好好認識它吧!

如果你有點軟體設計經驗,大概知道什麼是 Design Patterns,或許還用過個 factory method 或是 composite method,恭喜你!今天也是你的好日子,我們來一起系統性地、好好地比較各種不同的設計模式,分析他們的優缺點與使用時機,讓你可以不用看到什麼都只能用斧頭砍,可以偶爾換換口味,用個金斧頭,或是銀斧頭,砍。

如果你已經是老手,對 Design Patterns 信手捻來、倒背如流、舉一反三,那...歡迎站內信,我們可能有合適的職缺給你 (?)

所以什麼是 Design Patterns ?

當我們在設計程式碼,尤其是設計物件與物件之間的關係的時候,我們有兩個目標:能重複使用(reusable)有彈性(flexible)。當然,這不是簡單的事,很多時候都要依靠經驗累積與不斷嘗試才會找到真正適合的設計。久而久之,一些「模式」出現了。每個模式都是經驗的結晶,有良好的重用性與彈性,並且適合用來解決特定的問題。1994 年,俗稱 GoF (Gang of Four,四人幫) 的四個工程師出版了 Design Patterns: Elements of Reusable Object-Oriented Software,裡面收錄了 23 種常用的模式,「設計模式」因而誕生。

所以說,Design Patterns 並不是先有理論才有實踐,而是實實在在的 try-and-error,並且經過不斷測試後留下來的寶貴經驗。而現在我們看很多模式可能會覺得非常理所當然(理所當然到你會冒出「啊?軟體設計本來不就是應該要這樣嗎?」的疑問),這只是證明了這些設計模式的影響之大,已經滲入了許多軟體開發的原則/架構中,就算沒有真正讀過那本書的人,也都已經不知覺使用 Design Patterns 的概念了。

什麼?不只是 Design Patterns?

這個系列最後五篇會將眼光從設計模式拉高一層,介紹並討論一些常見程式架構(Software Architecture Patterns),分別是

  • MVC: Model-View-Controller
  • MVP: Model-View-Presenter
  • MVVM: Model-View-ViewModel
  • SOA: Service-Oriented Architecture
  • Microservices

程式架構廣義地說,也是設計模式的一種。它的目的同樣是重複使用(code reusability),只是探討的並不是物件與物件之間的關係,而是如何設計一個工程結構—角色要如何分配、要如何劃分各元件職責等等。當一個程式架構發展成熟,可能就會有框架(framework)出現。

介紹一下作者們

是的,這個系列是一個集體力量。我們來自 PicCollage 團隊(PicCollage 是一個神好用、下載量破兩億的照片編輯軟體),是一群聰明能幹又好學不倦(又喜歡自找麻煩)的工程師。如果你有個敏感的靈魂,可能會感受到這個系列裡每篇文章些微不同的風格,但不變的會是我們對文章品質的堅持,還有糟糕的幽默感。

我們參考的書/資源

書主要是這兩本:

還有我們團隊裡的各個大神的大腿、與實際使用的程式碼。

準備好了嗎?

預備備—開始!


下一篇
別急!進入 Design Patterns 的行前說明
系列文
什麼?又是/不只是 Design Patterns!?32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
糜糜卯卯
iT邦新手 5 級 ‧ 2019-09-16 20:16:34

哇,看到Design Patterns,先訂閱再說!!
先預祝大大完賽,造福廣大邦友,加油加油

我要留言

立即登入留言