0
我在一個位置,在那裏我有一個插件文件夾,那裏可能有1或100插件加載。避免與動態加載的紅寶石文件的全局
現在的問題是,每個插件都需要一個在啓動ruby文件中定義的類的實例。
一個非常簡單的例子是:
#startup.rb
def load_plugins
#... get each plugin file
require each_plugin
end
class MuchUsedClass
def do_something
#...
end
end
muchUsedInstance = MuchUsedClass.new
load_plugins
#some_plugin.rb
class SomePluginClass
def initialize(muchUsedInstance)
@muchUsedInstance = muchUsedInstance
end
def do_something_with_instance
@muchUsedInstance.do_something
end
end
somePluginInstance = SomePluginClass.new(muchUsedInstance)
somePluginInstance.do_something_with_instance
的主要問題是,當你調用需要,它沒有關於被要求之前發生了什麼任何線索。所以我發現在啓動文件中創建一個全局變量只是爲了滿足所有其他需要的文件,但它似乎是能夠將一些數據傳遞給包含文件的唯一方法之一,我也可以創建一個單例類揭露這些,但這似乎也有點討厭。因爲我對ruby還不熟悉,並且仍然在尋找靜態類型的眼鏡,所以我可能會錯過一個體面的模式來解決這個問題,在C#中,我會選擇依賴注入,然後將所有的東西都勾上去。 。
是的,我知道它沒有一個全球性的,我試圖展示我擁有的那種場景,以及如何解決這個問題,正如你所說的,全球化與其他人一樣。我將留下這個問題,看看其他人提出的問題。理想情況下,我不想在任何地方對實例進行硬編碼,但我希望使它更具擴展性,並且更易於測試。 – Grofit