delphi的class reference 和java的IOC
记得以前有人报怨在java里没有类似delphi里的class reference 用法,
比如在delphi里可以这样做
type
BaseClass = class
constructor Create; virtual;
...
end;
BaseClassRef = class of BaseClass
DerivedClass1 = class (BaseClass )
DerivedClass2 = class (BaseClass )
RegisterClass(DerivedClass1);
RegisterClass(DerivedClass2);
...
var
AClassRef : BaseClassRef ;
begin
//the class name can be stored in a configuration profile
AClassRef := BaseClassRef(FindClass('DerivedClass1'));
...
end;
现在, java里的IOC框架PicoContainer也有类似的功能。比如
Interface BaseIntf
class DerivedClass1 implements BaseIntf
class DerivedClass2 implements BaseIntf
public void () {
MutablePicoContainer pico = createPicoContainer(null);
pico.registerComponentImplementation("DerivedClass1",DerivedClass1.class);
pico.registerComponentImplementation("DerivedClass2",DerivedClass2.class);
...
//the class name can be stored in a configuration profile
BaseIntf t = (BaseIntf) pico.getComponentInstance("DerivedClass2");
assertNotNull(t);
}
目前, pico也有.net portion