设计模式之适配器模式

定义

将一个接口转换为客户端所期待的接口,从而使两个接口不兼容的类可以在一起工作

适配器模式还有个别名叫:Wrapper(包装器),顾名思义就是将目标类用一个新类包装一下,相当于在客户端与目标类直接加了一层。IT世界有句俗语:没有什么问题是加一层不能解决的

适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。

使用场景

在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。

两种模式:

1 对象适配器 ---通过组合,依赖

2 类适配器 ----用过继承和实现

 

package adapter.v1;

/**
* @author wmd
* @date 2022/5/1
*/
public class AdapterTest1 {

public static void main(String[] args) {

Adaptee adaptee = new Adaptee();
Adapter target = new Adapter(adaptee);
target.output5V();

}
}
class Adaptee{

public int output220V() {
return 220;
}
}

interface Target {
int output5V();
}
// 对象适配器
class Adapter implements Target {

private Adaptee adaptee;

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

@Override
public int output5V() {

return 0;
}
}



// 类适配器

package adapter.v2;

/**
* @author wmd
* @date 2022/5/1
*/
public class AdapterTest2 {
public static void main(String[] args) {
Adapter adapter = new Adapter();

adapter.output5V();

}

}

class Adapteee {
public int output220V() {
return 220;
}
}

interface Target {
int output5V();
}

class Adapter extends Adapteee implements Target {

@Override
public int output5V() {
return 5;
}
}

优点

  • 极大的增强了程序的可扩展性,通过此模式,你可以随意扩展程序的功能,但却不需要修改接口

缺点

  • 其实在我看来这个模式真没啥缺点,唯一可以称的上的缺点是多了一层,但是这也是没有办法的事情。


posted @   亢🐉有悔  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示