前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >适配器模式

适配器模式

作者头像
帅飞
发布2019-01-22 16:29:11
1K2
发布2019-01-22 16:29:11
举报
文章被收录于专栏:Java知其所以然Java知其所以然

定义

适配器用于让两个无关的类之间产生联系,可以一起协同工作。

解释

就拿小米 6手机为例子,它没有圆孔来让耳机插入,就只有一个方孔,那我们怎么插耳机呢?小米手机提供了一个转接口来帮我们干这件事,耳机本来就可以插圆孔但是不能插方孔,转接头既可以插圆孔也可以插方孔。这就使得本来耳机不能插入手机,通过一个转接口可以实现这个功能。这个转接口其实就是一个适配器,它让耳机和手机本来不可以通信的两个事物之间产生了关系。

形式

类的适配器模式

这个通过继承实现的,不推荐大家使用。

对象的适配器模式

这个是通过实现接口实现的,我下面的代码演示就是使用的这种形式。(推荐使用)

在面向对象的编程中,我们推荐使用组合/聚合,而不是去使用继承。

代码

实际编码中不推荐大家使用中文命名类名,我这里是为了方便大家理解才使用的,

适配器类

代码语言:javascript
复制
interface USB{
    void 插圆孔();
    void 插方孔();
}
class 耳机{
    public void 插圆孔(){
        System.out.println("耳机 插进圆孔了");
    }
}
public class Adapter implements USB{
    private 耳机 ear;

    public Adapter(耳机 ear){
        this.ear = ear;
    }

    @Override
    public void 插圆孔() {
        ear.插圆孔();
    }

    @Override
    public void 插方孔() {
        System.out.println("Adapter 插进方孔了");
    }
}

测试类

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        Adapter adapter = new Adapter(new 耳机());
        adapter.插圆孔();
        adapter.插方孔();
        System.out.println("可以听歌了");
    }
}

优点

  • 更好的复用性
  • 更好的扩展性

缺点

过多的使用适配器,会让系统非常零乱,不易整体进行把握。

建议

我只是把主要的思想给大家讲解了,真正要使用好适配器模式还是需要大家自己去理解和体会。比如在看源码的过程中就可以自己去体会那样设计的好处,码农和大牛之间的差距可能就是在思想上的高度。大牛在不断的体会设计,去想好的设计。码农去不停的重复 CRUD。当然我是个菜鸟,这只是我的感想罢了,但我相信有一天我可以达到心中的高度。

参考博文链接:https://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java知其所以然 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
  • 解释
  • 形式
  • 代码
  • 优点
  • 缺点
  • 建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档