0
我有與功能X.這個充滿軌引擎美孚導軌全引擎使用完整的引擎
我不想再拍引擎,引擎吧,這是幾乎相同的,但覆蓋funcitonality X,其中y 。 (它基本上是一樣的,但少數控制器動作和視圖有不同的實現)。
(我會在後面幾種安裝引擎拆分這一點,但就目前而言,這將是設置: 項目巴茲,利用發動機吧,它使用的發動機美孚)
我想知道是否有任何陷阱。它看起來不像一個經常使用的模式?任何其他人使用這種'某種引擎繼承'?
我有與功能X.這個充滿軌引擎美孚導軌全引擎使用完整的引擎
我不想再拍引擎,引擎吧,這是幾乎相同的,但覆蓋funcitonality X,其中y 。 (它基本上是一樣的,但少數控制器動作和視圖有不同的實現)。
(我會在後面幾種安裝引擎拆分這一點,但就目前而言,這將是設置: 項目巴茲,利用發動機吧,它使用的發動機美孚)
我想知道是否有任何陷阱。它看起來不像一個經常使用的模式?任何其他人使用這種'某種引擎繼承'?
Ruby OpenClassing是你想要做的。例如,
# in Engine Foo
# this code creates functionality x
Foo::SomeRubyClass
# functionality x
def some_method
0.10
end
end
# in Engine Bar
# this code opens and reevaluates the functionality x in Foo Engine
Foo::SomeRubyClass.class_eval do
# functionlity x method
def some_method
0.05
end
end
Rails模型/視圖/控制器的更全面的解釋。 http://edgeguides.rubyonrails.org/engines.html#overriding-models-and-controllers
謝謝,我忽略了這個簡單的解決方案。其結果可能是,我不應該在Foo中給我的文件和Bar中的同名? – SirLenz0rlot
實際上,命名它也是有意義的,所以你可以看到什麼是開放分類。開放分類通常被稱爲「裝飾者」模式,因爲你正在用新的/不同的功能來裝飾一些功能。 – westonplatter
關於裝飾模式的更多信息:http://lukeredpath.co.uk/blog/decorator-pattern-with-ruby-in-8-lines.html – westonplatter