我們假設我有一個包裝foo
與幾個類; Foo1, Foo2, Foo3
。他們都實現了IFoo
,它有一種方法。現在,我有另一個課程,Baz
,它們使用所有這些類。基本上baz
需要調用每個IFoo
類的方法。動態創建對象的正確Java方法是什麼?
注:
- 它們可以被重複使用。意思是,我們只需要創建一次。
- 某天我可能想添加
Foo4
。
現在,我能想到是創建一個單身,FooSingleton
它封裝了所有這些類和加載它們的:
- 讀文件。
- 反射
- 只寫了
new Foo1();
,new Foo2();
等,在單例的init函數內。
所以我想知道什麼是最好的方式(也許還有另一種巧妙的方法我還沒有想到的)
順便說一句,我遇到了Spring Dependency Injection但看着我一點點的開銷。
我只想叫'新Foo1()'當你需要'Foo1',除非是有原因的,使之更加複雜whihc是我也不清楚。 –
使用Spring,有一種非常自然的方式來做到這一點。如果沒有,'春'的方式是掃描實現IFoo的類的類路徑,將它們實例化爲單例(反射),並允許您在發現的每個事件中調用IFoo中的方法。如果您有一天添加了新的Foo4,您的框架會自動檢測並使用它。 –
@PeterLawrey,'baz'需要他們所有人。基本上'baz'是一個'Runnable',對於每個'run()'它調用每個'IFoo'類的這個方法。 – Elimination