设计模式之适配器模式(十四)

适配器模式

简介

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

         例如我们对接其他公司系统的时候他们返回的数据和我们的实体类可能有出入,例如自己公司的用户的电话信息,只有一个电话。公司要同步别人系统的用户数据到自己公司系统,被人设计的用户有多个联系电话,这个时候拿到的数据是不一致的,是否可以通过一个转换类将别人的数据封装为合适自己的呢?那么这个转换类其实就充当了适配器这个角色。

         又例如你去美国谈生意,不懂英语怎么办?难道你可以英语速学几天内讲一口流利的英语吗?你的客户可以中文速学几天内讲一口流利的中文吗?都不现实。最好的方法就是找翻译,那么这个翻译就是担任了适配器的角色。

通用类图

实现方式

         例如用户期待的是Target类调用方法,但是自己提供的类是Adaptee这个类,那么就不符合用户的要求,所有可以通过增加适配器类Adapter来转换,其实就是包装一下。


package com.rabbit.pattern.Adapter;

/**
 * 用户期待的接口
 * Created by vip on 2018/4/14.
 */
public class Target {

    public void request() {
        System.out.println("用户期待的接口");
    }

}
package com.rabbit.pattern.Adapter;

/**
 * 需要适配的类
 * Created by vip on 2018/4/14.
 */
public class Adaptee {

    public void request() {
        System.out.println("原本的接口,不合适用户的期待");
    }

}
package com.rabbit.pattern.Adapter;

/**
 * 适配器类,将不符合用户期待的接口匹配为用户期待的
 * Created by vip on 2018/4/14.
 */
public class Adapter extends Target {

    private Adaptee a = new Adaptee();

    @Override
    public void request() {
        //自己处理适配的逻辑
        a.request();
    }
}

总结

适用场景

 1、系统需要使用现有的类,而此类的接口不符合系统的需要。

2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。

 3、通过接口转换,将一个类插入另一个类系中。

优点

1.可以让任何两个没有关联的类一起运行。

2.提高了类的复用。

3.增加了类的透明度。

4.灵活性好。

缺点

1.过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。

 

2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。




展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie
应支付0元
点击重新获取
扫码支付

支付成功即可阅读