`
squirrelRao
  • 浏览: 66803 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式之Adapter模式

阅读更多

Adapter Pattern


  • 描述:提供一种解决方案,使不兼容的接口间能够互相协调工作,而不需要对已有接口进行修改。
  • 与之相关的设计模式:Bridge Pattern, Decorator Pattern
    Adapter Pattern可以通过两种方式实现(即:达到接口间数据类型格式转换的目的),一种是通过继承的方式实现,一种是使用委托聚合的方式实现。

  • 采用继承的方式实现Adapter Pattern:

          Adapter Pattern对应的类图:


 

   
   在实现过程中,Adapter的作用在以下的Java代码中可以得到体现:
  //Main
public static void main(String[] args)
 {
         XyzInterface xyz = new Adapter("xyz");
        xyz.action();
}

//XyzInterface.java
 public interface XyzInterface()
 {
      public void action(String arg);
}

//Adapter.java
 public class Adapter extends ActionEntity implements XyzInterface()
  {
          public void action(String arg)
           {
                  return this.entityAction(arg);    
           }

}
 
 //ActionEntity.java
 public class ActionEntity
 {
        public String entityAction(String arg)
        {
                return "<"+arg+">";
          }
}
 
  • 采用聚合的方式实现Adapter Pattern:
          Adapter Pattern对应的类图:


 
              在实现过程中,Adapter的作用在以下的Java代码中可以得到体现:
            
             public static void main(String[] args)
             {
                  XyzInterface xyz = new Adapter("xyz");
                  xyz.action();
              }

             //XyzInterface.java
             public interface XyzInterface()
              {
                     public void action(String arg);
               }

              //Adapter.java
              public class Adapter implements XyzInterface()
              {
                      private ActionEntity actionEntity;
                       
                      public Adapter()
                       {
                          actionEntity = new ActionEntity();
                       }

                       public void action(String arg)
                       {
                             return actionEntity.entityAction(arg);    
                        }

                }
 
                //ActionEntity.java
                public class ActionEntity
                {
                       public String entityAction(String arg)
                       {
                             return "<"+arg+">";
                       }
                 }
 

  • Adapter Pattern发挥作用的场景:
          1在实际开发过程中经常需要利用一些已经写好的类,但是这些已经写好的类还不能完全符合调用接口的要求,写一个Adapter作为二者之间的转化就可以发挥Adpater Pattern的作用。关键的是不用重新开发新代码或拷贝出冗余的代码出来,用Adapter类做一个转化即可。就像所谓的12V电压升压为24V一样。
           2、Adapter Pattern并不只能用到有自己开发的接口上,也能用到别人开发的接口上,只要知道这些接口的规范即可。
           3、Adapter Pattern的另一个用武之地就是在解决版本更新和兼容问题上。可以保证新旧版本共存的前提下对新版本进行维护升级。

 

  • 大小: 27.3 KB
  • 大小: 9.4 KB
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics