2017年4月25日 星期二

你的系統是MVC pattern還是MVC anti-pattern?


MVC是一種軟體架構模式,通常也是大多數程式設計新手第一個接觸的架構模式,因此也往往流於一種被濫用的名詞,許多新手常把「我的系統是採MVC架構設計的」這樣的話掛在嘴邊:,又或者找了一個open source framework,就以為follow他們的設計就是MVC了,這也是我寫下這篇文章的原因:提醒自己不要犯類似的錯誤,也希望能做到教學相長的作用。

2017年3月5日 星期日

設計模式(Design Pattern)



Pattern一詞,象徵著一種可重複利用規則與特徵,它廣泛地出現在視覺設計、攝影、商業等各種領域的文獻中,我們希望針對某個domain快速找出既有的解決方案與方法,就像網站設計可以套用現有的template,讓我們快速完成排版與佈局,同樣的,軟體設計領域,我們也會觀察問題,思考是否有可用的pattern,這樣就不必重新造輪子,快速完成程式的撰寫。

所謂工欲善其事,必先利其器,軟體設計的心法是物件導向原則,而實踐法就是design pattern,準備好你的工具箱、武器庫,在適當的時候使用它。也因此在學習design pattern時,你必須有良好的物件導向設計觀念、軟體工程知識、UML以及物件導向程式撰寫經驗:

  • 物件導向設計觀念:知道基本的物件導向觀念像是polymorphism、overload、override、interface、abstract class、inherit、encapsulation
  • 軟體工程知識:知道reuse的重要性、Developing requirements、技術的選擇與風險等等
  • 物件導向程式設計撰寫經驗:有專案系統開發實務經驗、遇過開發上的問題與貧頸等等,才會培養出sense
  • UML:透過UML建立系統開發時團隊溝通的共通語言,知道該透過什麼類型的diagram來展示你所強調的面向