Decorator Design Pattern(1)Handsome & Handsome 早餐店
生意還不錯的早餐店一家叫作「Handsome & Handsome」的早餐店已經散佈在大街小巷裡,在你上班或上學的路程中,你可以算算看會經過幾間這家連鎖早餐店,如果路途夠遠的話,說不定會超過十家以上。 在他們快速擴張時,早餐的種類也越來越多,多到連價格都很難計算。所以他們打算在每一家早餐店放一台特製的電子式收銀機,這台機器裡可以執行自己開發的Java程式。 資訊部門的主管Simon為了展示他在書本中學到東西,它先在紙上畫了上列的圖型。Simon很得意的將它展示給同事後,再繼續他未完成的工作: 在畫出上面的圖型後,連他最喜歡吃的火腿玉米蛋餅都還沒有畫出來,Simon就有點想要放棄了。這個圖型看起來有點像是一幅抽象畫,而不是一個UML類別圖型。 就算如此,Simon的腦海中仍然決定要照著這樣的設計繼續往下作(Simon第一本Java書的作者是Dr. Inheritance)。不過他想到了另外一個問題:如果雞蛋漲價了: 程式總是需要維護的Simon總算有考慮到「維護」的問題,他也想起一個關於繼承重要的特性:把共有的特性移到父類別中。所以Simon把早餐的類別改成這樣: 到目前為止,Simon總算鬆了一口氣,因為畫出來的圖型不會像是一幅抽象畫了: 還是不行這樣的設計應該不會有問題了吧?就在這個時候,Simon聽到遠處飄來秘書Kelly跟Jo的對話: Kelly:今天早餐吃了一個超級三明治,真是過癮! 聽到這段對話以後,Simon的腦海中浮現一個畫面: 目前的設計似乎沒有辦法解決這個問題,所以Simon真的得放棄之前所有的設計,開始尋找一個可以解決所有問題的設計方法。 你可以把這樣的設計方法稱為「在編譯時期決定所有物件的特性和功能」。所以你必須換個角度來思考這類的問題。 |