请教:
缺省适配器模式可以大量简化程序员的工作。
但是,在某些时候,我们不能使用缺省适配器。请问何种情况下不能使用缺省适配器,
缺省适配器模式最大的局限性是什么?

解决方案 »

  1.   

    呵呵,我的经验尚浅,还真的很难回答缺省适配的缺点。
        不过有个缺点可能是个问题,使用缺省适配模式时,需要动用关键字extends,而我们知道在JAVA中继承只可以使用一次,如果还希望拥有其他体系结构的特性就不得不使用implements来扩展实现接口。
        不过这个问题太过具体,不是很多时候都能遇到,但如果你需要使用适配模式的类同时有可能需要继承自其他体系,那么就需要多加考虑了,举个例子:
        interface Source {
          void first();
          void second();
          void third();
        }
        abstract class Adapter implements Concrete {
          void first() { }
          void second() { }
          void third() { }
        }
        class Adaptee extends Adapter {
          void second() {
            // do something...
          }
        }    上例中,由于Adaptee继承自Adapter,所以不必在实现所有Source interface定义的method。这是非常让人愉快的。
        可是,假设当程序深入之后,我们发现我们希望Adaptee class拥有线程的功能以应付多人并发访问的问题,麻烦来了,原先我们只需要
        class Adaptee extends Thread {
          ...
        }
    可惜我们知道,在JAVA中extends只可以使用一次,那么我们不得不接口实现runnable interface以使我们的class拥有多线程的威力。当然问题还是解决了,可是如果我们期望再次继承的类不具备这样的解决方案呢?我想为此我们不得不提供诸如线程所提供的解决方案(或者重新设计一下,看看是否可以使用复合而非继承,这在时间与成本都允许的条件下是个决好的主义,但只有在时间与成本都能满足的时候)。
        呵呵,在下愚钝,虽然上述问题在实际开发中并不多见,而且也能够获得相应的解决方案,不过如果是问麻烦之处,我还是觉得此问题算得上是个比较恼人的问题。@.@||~