有A,B,C...等若干个类,这些类都继承与Base类,并且都只有一个方法:string getcontent()。
现在主控制程序从一个配置文档里面读出当前要调用的类的方法,
配置文档大概如下:
case1=A
case2=C
case3=R
case4=B
.....这样,在case1的时候,程序需要实例化A的对象OA,并调用OA.getcontent()。
由于配置文档是可能改动的,所以不能使用
if(case1) (new A()).getcontent()
这样的代码,而是根据文档中读出来的"A"这个字符串来实例化这个对象。实际上就是要完成这样的一个工厂:
Base Factory(int case)
{
String ClassName=GetClassNameByCase(case);//读配置文档得到要调用的类的名字,比如A,B...//=====以下根据ClassName构造一个相应的对象retval
?????如何实现?????return (Base)retval;
}
然后,主控制程序就调用Factory(case).getcontent()就可以了。
这个好像与工厂模式有所不同,请问各位用Java如何实现这个功能。

解决方案 »

  1.   

    试试看这样行不行:工厂:
    Base Factory(int case)
    {
    String ClassName=GetClassNameByCase(case);//读配置文档得到要调用的类的名字,比如A,B...//=====以下根据ClassName构造一个相应的对象retvalBase retval = (Base)(Class.forName(ClassName).newInstance());return (Base)retval;
    }
      

  2.   

    你不是都实现了么!
    class obj=Class.forName(ClassName);
      

  3.   

    Base Factory(int case)
    {
    String ClassName=GetClassNameByCase(case);//读配置文档得到要调用的类的名字,比如A,B...//=====以下根据ClassName构造一个相应的对象retvalBase retval = Class.forName(ClassName).newInstance();return retval;
    }
    这样子就可以了
    如果需要调用的是B的方法
    那么这段的代码就相当于
    Base base=new B();
    base.getContent();//这里会调用B里面的getContent()方法