比如说系统的规范中定义了一个抽象类型和相关的get,set方法,这个类型定义是使用接口定义的,比如Interface Type,现在我想先使用这个接口类型的变量来完成一部分的代码,即定义了一些Type t1, Type t2...然后我需要实现这个接口,比如TypeImpl  implements Type,那我是不是需要把所有的Type类型的变量都改成TypeImpl类型的?有没有办法实现不更改呢?能不能动态的把对Type类型的调用转换成对TypeImpl的呢?

解决方案 »

  1.   

    Type type = new TypeImpl();
    type.method1();
      

  2.   

    是不需要改动所有的。楼上的已经说了
    具体的创建Type type = new TypeImpl();可以写到工厂类里面处理,别的地方调用
    这样你只需要改工厂里面的就可以了
      

  3.   

    也就是说,还是需要更改Type type = new TypeImpl();这个部分?或者使用工厂模式?
      

  4.   

    肯定需要这一部分的
    工厂模式只是用来集中提供对象实例的
    或者你用spring,它可以充当工厂的功能,只需要配置下就可以
      

  5.   

    晕翻翻
    举个例子
    jcf下面collection接口系列的
    Collection c=new HashSet();
    Collection c1=new LinkedList();关于oop 我很质疑ls
      

  6.   

    还有你要是根本没用过工厂模式或者spring的话,
    那么你就最好闭上嘴
    不要拿点点多态的东西来质疑
      

  7.   

    hehe 别动不动就那设计模式吓唬我谈到模式你口中的工厂 相必就是那连接池那种用的那种简单模式工厂了吧不过是定制一个实例而已,完成初始化lz的例子里根本没有使用的必要。只是一个接口用来多种实现而已。至于兄台说的
    *************************************
    *呵呵,楼上的习惯直接写也不能误导lz
    *你要是多层继承关系你试试            
    **************************************
    我很想希望您能指点下,你所说的多层继承下会出现什么问题