2011-10-22 96 views

回答

88

裝飾器更像是「讓我們爲這個實體添加一些功能」。主持人更多的是「讓我們在模型/後端和視圖之間搭建橋樑」。主持人模式有幾種解釋。

裝飾者是通用的/通用的。演講者的職責範圍較窄。裝飾者跨領域使用,主持人幾乎總是與視圖式功能相關。

+3

謝謝。似乎Draper寶石是主講者和裝飾者的混合體。 – keruilin

+16

@keruilin有一件事要記住:裝飾者應該能夠裝飾其他裝飾器(以及裝飾組件對象),因爲他們的目的之一是解決繼承的限制。 (Draper確實*不*這樣做)。裝飾者模式在這個意義上與組合模式非常相似,除了從外部輸入而不是內部輸出(如果這是有意義的)。 – Smudge

+5

我看到一個裝飾器作爲一個通用的模式,而主持人作爲與視圖層相關的裝飾器的特定應用程序。 – Kris

29

我建議你檢查這一點 - Exhibit vs Presenter

裝飾器是一種設計模式,用於通過包裝來擴展特定對象的功能,而不影響該對象的其他實例。一般來說,裝飾者模式是open/close principle的一個例子(該類爲修改而關閉,但可用於擴展)。

展示和演示者模式都是一種裝飾模式。

+0

+1,用於鏈接到Mike Pack的博客文章。優秀的文章,解釋模式之間的差異。 – ki4jnq

+0

+1表示展示模式。我最終得到了Avdi Grimm的解釋它的書。雖然,這不是我的問題的正確解決方案,但它仍然是一個驚人的模式。極好的食物。 – Yonk