elegant coding
elegant coding with c#, Oracle, delphi and java

导航

 

记得以前有人报怨在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

posted on 2004-11-29 03:40  yyanghhong  阅读(1644)  评论(2编辑  收藏  举报