Frank Buschmann

Applying Patterns
 

上一頁 下一頁


One Mechanism for One Kind of Problem(一種問題只用一個機制解決)

Context:我們正以逐步細緻化的方式,來定義及解構一個軟體架構。

Problem:

我們該如何處理發生在系統不同地方類似及密切相關的問題?例如,在某個應用系統中,把某實體輸出入裝置的實作細節,從一般性的輸出入處理中區分開來。這裡有兩個壓力:

Solution:


以類似的方式解決相關的設計問題:藉由使用相同或相關的設計準則及樣式。依據相同的程式撰寫準則及慣用語(idioms)來實作他們的解決方案。如果這些問題發生在相同的抽象層次;則以相同的規模(granularity)來設計他們的解決方案。

因此,在架構中用以處理相關系統構面的部分,就會展現出類似規模的設計結構與實作。如此,可以讓系統容易瞭解及改變。它的架構會變的均衡且具連貫性。而且在類似設計問題的解決方案下,都會有一個共通的觀點。


Example:

當指定一個 Model-View-Controller [BMRSS96] 架構時,你可能會想要從所使用之特殊輸入裝置的處理細節中,將一般性的輸入處理給區隔出來;如滑鼠及光筆等。Adapter樣式[GHJV95] adapter的變形- Sensor 可以應用於此。簡言之,一個 sensor 提供了一個從特殊性介面到一般性介面的單向調整。然而,這個系統並不只是接受接收輸入而已,它同時也會產生輸出。因此,當我們細緻化系統的輸入端時,也同時要能細緻化輸出端。而 Adapter 的另一種變形- Display 則提供了一個從一般性到特殊性介面的單向調整。這是前面所提 Sensor 樣式的互補性樣式。

 


上一頁 下一頁