开篇之适配器

   这两天,听到有人讨论适配器模式,讨论的是对象适配器和类适配器。他们对着Adaptee和Adapter大声讨论着,本来想发表自己的想法,结果被他们大声盖住,只能回家写出自己的想法,并且从他们的讨论中更加深入的理解了适配器是什么。

       client和Adaptee之前是什么关系?多对多。一个写好的client处理程序,在后续可能会有需要新的处理对象,而这些处理对象不符合client的接口需要,那么就需要对些Adaptee进行适配,适配成满足client需要的Adapter。这是一个client对多个Adaptee的情况。也有多个client对一Adaptee的情况,因为多个client都可能需要去执行Adaptee,不同的client需要不同的接口对象,那么这个Adaptee就会被适配成不同的接口,这是多个client对一个Adaptee的情况。
   首先,适配器是为client服务的,是先有client,再有Adapter,或者说,是先从client的角度看待,发现Adaptee不能满足接口的统一性,需要Adapter。而Adaptee可能在任何Adapter之前的任何时候出现都可以。client是我们的代码,而且是已经存在的代码,里面的实现方式是:

      class client{
            Adapter adapter;
            void method(){
                adapter.methodAdapter();
            }
       }

 

    请注意,这个client里面持有的Adapter是指一个接口或者抽象,并不是说就是适配器。因为我们有client的时候,还不需要适配器。

   在client接口一定的情况下,希望client也能去执行adaptee的methodAdaptee方法,但是client只认识adapter的methodAdapter方法,怎么办呢?这个时候,适配器隆重出场了。

class   适配器 implements Adapter{
  
   Adaptee adaptee;

  void methodAdapter(){

   adaptee.methodAdaptee();

   }    
  
 
}

   通过这个转换,我们就可以把Adaptee包裹成Adapter,然后送给client。client发现这是个Adapter,具有methodAdapter方法,从而去执行。但是由于内部实际包装了Adaptee的方法,从而达成了执行Adaptee的方法的目标。

  


 

你可能感兴趣的:(适配器)