l

2013年6月14日 星期五

如何套用pattern來設計軟體架構

June 13 22:00~23:03

螢幕快照 2013-06-13 下午10.59.22

 

連續放了6天假,端午過後第一天上班還處在休假模式,腦袋空空的,想來想去就介紹一篇Teddy好幾年前看過的文章好了。這篇文章的標題叫做《Applying Patterns》,但是Teddy到今天為止都還搞不清楚文章的作者是誰。文章可以在這裡下載,這個網址是Douglas C. Schmidt的網頁,但由於文章中看不出作者與出處,所以只能暫時歸類為「作者不詳」挑眉質疑

有善心人士將這篇文章翻譯成正體中文,連結在此。根據翻譯者的說明,這篇文章的作者是Frank Buschmann。如果有鄉民知道這篇文章的出處與作者,還請留言告知。

***

學過design pattern(設計模式)的鄉民們到後來可能都會遭遇的一個問題:我要如何套用pattern來解決軟體架構上的問題?關於這個問題,Teddy在上「Design Patterns這樣學就會了:入門實作班」的時候提過一種方法:

螢幕快照 2013-06-13 下午10.18.13

 

在《Applying Patterns》這篇文章中,作者提出9個pattern來說明套用設計模式來設計軟體架構的流程。文章中所使用的說法是:A Pattern Language for Applying Patterns,有點饒口。

螢幕快照 2013-06-13 下午10.20.42

這9個pattern分別是:

  • Piecemeal Growth
  • Architectural Vision
  • Step-wise Refinement。
  • Repair Instead Large Lump Design
  • Stable Design Center
  • One Mechanism for One Kind of Problem
  • One Pattern at a Time
  • First Integrate Then Implement
  • Merge Similar Responsibilities

Teddy今天並沒有要解釋這9個pattern的涵義,中、英文的連結都提供給鄉民們了,有興趣的鄉民就麻煩自行餵食一下。Teddy想要補充的是,這幾個pattern,有很多都是從Alexander的書中引用出來的。例如,Alexander在《A New Theory of Urban Design》這本書裡面提到「The seven detailed rules of growth」:

  • Piecemeal growth
  • The growth of larger wholes
  • Visions
  • The basic rule of positive urban space
  • Layout of large buildings
  • Construction
  • Formation of centers

有好幾點就跟文章中的那9個pattern很類似。另外「One Mechanism for One Kind of Problem」與「One Pattern at a Time」是Alexander在《The Timeless Way of Building》書中提到的基本套用pattern原則。最後,「Repair Instead Large Lump Design」(可視為refactoring的觀念)在Alexander的《The Oregon Experiment》書中也有提到。

***

Teddy已經不只一次在部落格中推薦鄉民們讀Alexander的書真的可以增進軟體架構與設計能力,今天再次提供佐證資料,期盼「有緣人」能夠體會箇中奧妙之處。

***

友藏內心獨白:要找到徒弟也不容易啊。

2 則留言:

  1. 查了一下Alexander寫的都是建築方面的書耶,這樣讀起來ok嗎?

    回覆刪除
    回覆
    1. 就是不OK所以很多人都沒讀啊...有些人讀了之後覺得沒fu...不知道書上在講什麼。讀了又讀懂的人就佔便宜了XD。

      刪除