设计模式08_适配器模式

          本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/51570748


1、定义

          适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。(摘自Head First中文版243页)


2、说明

          通常情况下的适配器模式有两种形式:对象适配器和类适配器。类的适配器模式采用继承实现,而对象适配器采用对象组合方式实现。

          类适配器使用继承的方式(静态方式),这样就使得适配器不能和Adaptee的子类一起工作。当目标类数量随着业务需求变得越来越多时,会使得代码结构变得复杂,以至于难以维护;对象适配器使用对象组合的方式(动态组合方式),一个适配器可以把多种不同的源适配到同一个目标,即同一个适配器可以把源类和源类的子类都适配到目标接口。所以在实际情况下,建议尽量多使用对象适配器的实现方式,即多用组合、少用继承。但是对于具体的问题,还是需要选择合适的方式去实现。

          那什么时候使用适配器模式呢?一种情况是,你想使用一个已经存在的类,而其接口不符合你的需求。你打算创建一个可以复用的类,该类可以与其它不相关的类或不可预见的类(即接口间不兼容的类)协同工作,则可以考虑使用适配器模式。另一种情况是,你想使用一些已经存在的类,但是不可能对每一个类都子类化以匹配它们的接口,这时可以考虑使用(对象)适配器模式(对象适配器可以适配它的父类接口)。


3、角色

          目标接口(Target):客户所期待的接口,具体类、抽象类、接口。

          待适配的类(Adaptee):需要适配的类。

          适配器(Adapter):包装一个需要适配的对象,把原接口转换成目标接口。 


4、类图

这里写图片描述


5、示例

          类适配器示例如下所示:

package headfirst.design.adapter.extend;

/**
 * 已存在的、具有特殊功能、但不符合我们既有的标准接口的类
 */
public class Adaptee {
   
    public void specialMethod() {
        System.err.println("这是一个经过适配的特殊的方法");
    }
}
package headfirst.design.adapter.extend;

/**
 * 定义客户端期待的接口
 */
public interface Itarget 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值