2008年5月2日 星期五

漫談樣式(二)

我在面談應徵的工程師時,常請對方說明一個最熟悉的設計樣式。通常得到的答案是MVC(model-view-controller)。

可惜,MVC不是設計樣式,是架構樣式(Architectural Pattern)。而且應徵者的描述大多不正確。我猜原因是因為大多人是從所謂MVC framework學MVC的運作。但MVC Frameworks大多都不是真的MVC架構,真正的MVC架構裏需要實做一個Observer,讓Model改變時可以通知View跟Controller。這在網頁架構下很難實做。

樣式運動不是只針對設計。有一本樣式巨作POSA(Pattern-Oriented Software Architecture)第一冊,,地位僅次於GoF Design Patterns,書中就依照樣式的特性分三類:

  1. Architectural Patterns︰定義系統的基本架構或子系統的切割。如MVC、Layers(Tiers)、Pipes、Microkernel等等
  2. Design Patterns︰解決一般設計問題。像Observer、Proxy等
  3. Idioms︰關於程式語言的低階的patterns
此外,還有其他種類的樣式。例如系統分析也有Analysis Patterns。有針對多工以及concurrency的patterns。也有針對event handling的patterns。軟體的Patterns運動至今已經十多年了。最重要的幾本著作,似乎都是在初期1994~1996這段期間完成的。這些書所用的技術與術語多少都已經過時了。但是仍然有很好的參考價值。Design Patterns有一些新書比原書好讀,例如Head-First Design Patterns。但是Analysis Patterns就一直獨一無二的,沒有出現其他的書籍討論這個題材。之前有專文推薦過這本書,因為它是學習OOA很好的材料。

沒有留言: