设计模式结构型模式——适配器模式

1.模式的定义

适配器模式(Adpater Pattern):将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

在软件开发中,系统的数据和行为都正确,但接口不符合时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但接口又与复用环境要求不一致的情况。

2.模式的构成

适配器模式的角色构成

目标抽象类(Target):定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。

适配器类      (Adapter):作为一个转换器,对Adaptee和Target进行适配。把源接口转换成目标接口。

适配者类      (Adaptee):被适配的角色,它定义了一个已经存在的接口,这个接口需要适配。

3.模式的实现

适配器模式分为类适配器模式和对象适配器模式

目标抽象类 Target,java

public interface Target {
    /**
     * 这是源类Adaptee也有的方法
     */
    public void sampleOperation1();
    /**
     * 这是源类Adapteee没有的方法
     */
    public void sampleOperation2();

}

适配者  Adaptee.java

public class Adaptee {
        public void sampleOperation1(){}
}

适配器  Adapter.java —— 类适配器模式

public class Adapter extends Adaptee implements Target {
    /**
     * 由于源类Adaptee没有方法sampleOperation2()
     * 因此适配器补充上这个方法
     */
    @Override
    public void sampleOperation2() {
        //写相关的代码
    }
}

适配器 Adapter.java —— 对象适配器模式

public class Adapter extends Adaptee implements Target {
   private Adaptee adaptee;

   public Adapter(Adaptee adaptee){
       this.adaptee = adaptee;
   }

    /**
     * 源类Adaptee有方法sampleOperation1
     * 因此适配器类直接委派即可
     */
    public void sampleOperation1(){
        this.adaptee.sampleOperation1();
    }
    /**
     * 源类Adaptee没有方法sampleOperation2
     * 因此由适配器类需要补充此方法
     */
    public void sampleOperation2(){
        //写相关的代码
    }

}

(声明:本文为个人学习笔记,观点非原创。如有问题,欢迎讨论。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值