日期:2014-05-20 浏览次数:21102 次
public class A {
        private AA aa;
        private BB bb;
        public Object A() {
            if (条件成立) {
                aa = new AA();
                // 省略N行代码
            } else {
                bb = new BB();
                // 省略N行代码
            }
        }
    }
public interface InterfaceName {}
class AA extends InterfaceName {}
class BB extends InterfaceName {}
public class A {
  
  public Object A() {
    
    method( 条件成立 ? new AA() : new BB() );
  }
  private void method(InterfaceName arg) {
    // ...
  }
}
------解决方案--------------------
可以看下类似工厂模式的方法。
不过返回的对象可以有统一的接口,就是AA和BB实现统一的一个接口。
------解决方案--------------------
如果AA和BB,是相同类型的对象,那么可以继承于抽象类AB,继而用工厂方法,这样,显得逻辑更清楚。
------解决方案--------------------
用一个专业词来描述的话,楼主这个要求的实现思想,是个标准的"多态"啊。
三个条件:继承,重写,父类应用指向子类对象。