最近在Ruby on Rails社區中有關於decorators和演示者的各種討論。Ruby on Rails模式 - 裝飾者vs主持人
這兩者之間的本質區別是什麼?如果有的話,有哪些線索告訴我哪一個可以用於另一個?或者也許使用這兩個結合?
最近在Ruby on Rails社區中有關於decorators和演示者的各種討論。Ruby on Rails模式 - 裝飾者vs主持人
這兩者之間的本質區別是什麼?如果有的話,有哪些線索告訴我哪一個可以用於另一個?或者也許使用這兩個結合?
裝飾器更像是「讓我們爲這個實體添加一些功能」。主持人更多的是「讓我們在模型/後端和視圖之間搭建橋樑」。主持人模式有幾種解釋。
裝飾者是通用的/通用的。演講者的職責範圍較窄。裝飾者跨領域使用,主持人幾乎總是與視圖式功能相關。
我建議你檢查這一點 - Exhibit vs Presenter。
裝飾器是一種設計模式,用於通過包裝來擴展特定對象的功能,而不影響該對象的其他實例。一般來說,裝飾者模式是open/close principle的一個例子(該類爲修改而關閉,但可用於擴展)。
展示和演示者模式都是一種裝飾模式。
謝謝。似乎Draper寶石是主講者和裝飾者的混合體。 – keruilin
@keruilin有一件事要記住:裝飾者應該能夠裝飾其他裝飾器(以及裝飾組件對象),因爲他們的目的之一是解決繼承的限制。 (Draper確實*不*這樣做)。裝飾者模式在這個意義上與組合模式非常相似,除了從外部輸入而不是內部輸出(如果這是有意義的)。 – Smudge
我看到一個裝飾器作爲一個通用的模式,而主持人作爲與視圖層相關的裝飾器的特定應用程序。 – Kris