我在Ruby中一類擁有一些東西,我會叫FooBox
:如何在實例化時切換實現?
class FooBox
...
end
我有一個名爲BoxA
和BoxB
具有不同的特性,但在同一界面FooBox
兩種可能的後備數據存儲:
class BoxA
include Enumerable
def put_stuff(thing)
...
end
end
class BoxB
include Enumerable
def put_stuff(thing)
...
end
end
如何實例化FooBox
,並根據參數決定是否使用BoxA
或BoxB
實現來支持它?我不想將實現傳遞給構造函數;我只想傳遞一些信息來決定使用哪種類型。
class FooBox
def initialize(implementation_choice)
# ???
end
end
您可以更具體地瞭解'FooBox'如何使用這些實現?如果你傳遞了一個實際的實現實例或一個abitrary標誌,爲什麼它很重要,你試圖避免什麼? – PinnyM 2013-03-11 03:26:44
所以你想在Ruby中實現工廠設計模式? – donnior 2013-03-11 03:34:41
FooBox的消費者不知道支持的實現,它只是想如何處理數據(從抽象意義上講)。 FooBox查看參數,然後顯示「我看到你在這裏所要求的東西,讓我爲此進行實施。」 – 2013-03-11 03:36:24