关于子类转换的疑问
有一个标准的父类:A 
 有两个子类,都继承父类A,名字分别叫:B,C 
 B,C都扩展了一个方法,叫function1(),处理不一样但是名字一样。(父类A中没有这个方法,而且父类是标准类,不可修改) 
 现在的需要是,根据不同的条件,分别去调用B或C,但是他们做的处理却是完全一样的。 
 伪代码如下: 
 A   obj   =   instance; 
 if   ( "employee ".equals(input)) 
 { 
       ((B)obj).function1();//1 
       ... 
 } 
 else 
 { 
       ((C)obj).function1();//2 
       ... 
 }   
  "1 "处与 "2 "处编写的代码完全一致,只是要把他们转成不同的子类. 
 若是这种非常类似的代码写两遍,觉得太傻了,有没有什么好的方法,使这段代码写一遍就可以了.谢谢.
------解决方案--------------------可不可以这样做: 
 一个虚基类D继承自A,包含方法function1(); 
 然后B,C继承D,重写方法function1(); 
 D obj = instance; 
 obj.function1();   
 偶也是菜鸟,不知这样是否可行
------解决方案--------------------可以把你的A类变成抽象类吗? 
 如果可以的话,把A类变成抽象类,在A中添加抽象方法 abstract function1();然后在B,C中实现他们。 
 调用时如下: 
 void functionName(A a){ 
    a.function(); 
 }
------解决方案--------------------这个需要具体情况具体分析   
 A类不可改动, 但又不完全符合你的接口要求, 所以这里最好给A来一个Adapter D   
 D里面定义你需要的接口, 大部分功能转发给A解决   
 B, C然后继承D就可以了, D再应用Template Pattern, 由具体子类B, C实现function   
 ------------------------ 
 最近Head first Design Pattern看多了, 搞得言必谈模式, 勿怪!