首页 > 编程语言 > 详细

Java设计模式----适配器模式

时间:2019-03-15 19:38:21      阅读:196      评论:0      收藏:0      [点我收藏+]

电子设备之间有线数据传输常用USB来进行,例如现在某果笔记本统一采用了USB type-c接口,而目前绝大多数即用即插存储介质用的是USB type-b接口,那么为了适配,往往需要消费者购买转换坞等中间设备进行过渡,这种模式其实就是程序设计中常用的适配器模式,另一个形象的实例就是扳手为了拧动型号的螺栓,也需要相应的转接头进行适配。

技术分享图片技术分享图片

 

 


 

1.适配器模式

 以上两个例子,体会一下就能明白适配器模式的用途了。

适配器模式(Adapter Pattern),将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。

下面是适配器模式的UML类图:

技术分享图片

Target: 客户端所希望的接口;

Adapter: 适配器,将Target请求适配到Adaptee的相应接口中处理;

Adaptee: 被适配的接口。

一般什么时候使用适配器模式呢?系统比较陈旧的时候,客户端更新,而短时间没有办法更新系统,而采取添加中间层的办法采用适配器模式来兼容。


2.代码实现

场景是这样的:小红去欧洲旅游,发现欧标插座都是两个圆孔的,需要相应的欧标插头才能插入,而小红的手机充电器的插头是国标的,怎么办呢?只能用适配器,国标插头插入适配器的国标一端,适配器的另一端欧标插头插入欧标插座。

Socket,定义了插座,提供电源

/**
 * 插座,供电
 */
interface Socket {
    void supplyPower();
}

 

欧洲标准插座

/**
 * 欧洲标准的插座,只能插入欧洲标准插头
 */
class EuroSocket implements Socket {

    @Override
    public void supplyPower() {
        System.out.println("欧洲插座供电。");
    }
}

 

适配器类,根据开闭原则和单一职责原则,可以实现各种标准插座的适配器

/**
 * 适配器接口,可以实现各种适配器
 */
interface Adapter {
    void plugin();
}

 

这里只实现欧洲插座标准的适配器

/**
 *  欧洲插座适配器
 */
class EuroSocketAdapter implements Adapter {
    private Socket euroSocket;
    public EuroSocketAdapter(final Socket socket) {
        euroSocket = socket;
    }

    @Override
    public void plugin() {
        System.out.println("适配器插入欧洲插座。");
        euroSocket.supplyPower();
    }
}

 

调用

public class AdpaterDemo {

    public static void main(String[] args) {
        Adapter adapter = new EuroSocketAdapter(new EuroSocket());
        System.out.println("小红将充电器插入适配器。");
        adapter.plugin();
    }
}

 

 输出结果

小红将充电器插入适配器。
适配器插入欧洲插座。
欧洲插座供电。

 


3.总结

下面是与适配器模式“类似”模式与适配器模式的区别:

适配器模式:为了让客户使用老接口而新增的、客户所期望的接口;

代理模式:与被代理的接口相同,控制客户的访问;

装饰器模式:加强接口的功能,增加额外效果;

外观模式:提供一个简洁的接口,内部处理一系列复杂的逻辑。

Java设计模式----适配器模式

原文:https://www.cnblogs.com/yxlaisj/p/10530225.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!