适配器模式

1.定义
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。
2.适用场景
1)改造遗留系统或者使用第三方系统,原系统的接口跟新系统不符,无法一起工作。适配器模式的前提是原系统的接口无法修改,新系统的接口也无法修改成跟原系统的接口匹配,两个都不能改,引入一个Adapter,来适配一下。
2)现实中的例子。手机充电器、电源插头适配器,例如你买了水货笔记本,那就得买一个电源插头适配器,才能使用你的本本,两者都不能直接修改。
3.类图

适配器模式_第1张图片

1)Amazon:属于第三方系统无法改造,提供了wishlist接口。
2)OnlineShop:新系统,使用了favorite接口,这样两个家伙互相打架,不兼容,谁也不肯改自己的接口。
3)AdaptedAmazon:适配器,通过它来协调一下两个不兼容的接口。
4)AdapterMain:客户端。
4.代码示例
public class Amazon {
   public void wishlist(){
      System.out.println("amazon wishlist");
   }
}

public interface OnlineShop {
   public void favorite();
}


public class AdaptedAmazon implements OnlineShop {
   Amazon amazon = new Amazon();
   public void favorite(){
      amazon.wishlist();
   }
}

public class AdapterMain {
   public  static void main(String[] args){
      OnlineShop shop = new AdaptedAmazon();
      shop.favorite();
   }
}


上面代码示例属于对象适配器,还有一种类适配器,代码如下:
AdaptedAmazon修改如下,其他类不变
public class AdaptedAmazon extends Amazon implements OnlineShop {
   public void favorite(){
      wishlist();
   }
}


对象适配器组合了被适配的对象,而类适配器继承被适配的类。
对象适配器可以动态的修改已适配不同的被适配对象,而类适配器做不到这一点。

你可能感兴趣的:(设计模式,适配器模式)