我们假设我有一个包装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