Java设计模式之适配器模式

适配器模式

引入问题

相信大家出国旅游的时候都会碰到一个问题,在很多国家,我们带去的手机电脑等充电器都无法使用,因为这些国家使用的插座接口并不适用于我们平时使用的国标插头。这个时候,我们一般会通过添加一个插头转换器,将不适用于国标插头的插座接口装换成国标插头能使用的插座接口。这就是适配器的工作,它位于实际情况和需求之间,填补两者的差异。
而在我们平时的开发中,经常也会出现类似的问题。即我们想要使用一个已经存在的类,但是该类不符合接口的需求。

介绍

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

适配器模式下主要有以下四种角色:

  1. Target(对象)
    该角色负责定义Client所需的接口。
  2. Client(请求者)
    该角色负责使用Target角色所定义的方法进行具体处理。
  3. Adaptee(被适配对象)
    该角色是一个持有既定接口的角色,该接口需要被适配。
  4. Adapter(适配器)
    该角色是适配器模式的主角,负责对Adaptee的接口和Target接口进行适配。

适配器模式有以下两种实现方式:

  1. 类适配器模式
  2. 对象适配器模式
示例程序
  1. 类适配器模式
    类适配器模式类图

    Adaptee类
    public class Adaptee {
            public void method() {
                System.out.println("执行被适配接口...");
            }
    }
    Target接口
    public interface Target {
            public void targetMethod();
    }
    Adapter类
    public class Adapter extends Adaptee implements Target {
            public void targetMethod() {
                super.method();
            }
    }
    Client类
    public class Client {
            public static void main(String[] args) {
                Target target = new Adapter();
                target.targetMethod();
            }
    }
    运行结果
    执行被适配接口...
  2. 对象适配器模式
    对象适配器模式类图

    Adaptee类
    public class Adaptee {
            public void method() {
                System.out.println("执行被适配接口...");
            }
    }
    Target接口
    public interface Target {
            public void targetMethod();
    }
    Adapter类
    public class Adapter implements Target {
            Adaptee adaptee = new Adaptee();
            public void targetMethod() {
                adaptee.method();
            }
    }
    Client类
    public class Client {
            public static void main(String[] args) {
                Target target = new Adapter();
                target.targetMethod();
            }
    }
    运行结果
    执行被适配接口...
    
适配器模式总结
  • 优点:
    1)使用适配器模式,代码的耦合度较低。
    2)只要适配器类编写得当,随意两个没有关系的类都可以在一起运行。
    3)灵活、可复用性高,适配器随时可删可改,不会对既存的逻辑产生影响。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值