适配器模式

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

[img]http://dl2.iteye.com/upload/attachment/0105/5118/bf1620e9-9d02-3d7a-924a-134cb28fec19.jpg[/img]

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();
}
}


对象适配器组合了被适配的对象,而类适配器继承被适配的类。
对象适配器可以动态的修改已适配不同的被适配对象,而类适配器做不到这一点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值