适配器模式是一种结构型设计模式,它允许将一个现有的类与另一个不兼容的类进行协同工作。适配器模式通过创建一个中间适配器来连接两个不兼容的接口,使它们能够正常地协作。
适配器模式适用于需要将不兼容的类或接口进行适配的情况。例如,当我们需要将一个旧版 API 系统与新版的客户端进行集成时,可以使用适配器模式将两种不同的接口进行适配。适配器模式的主要优点是可以复用现有的代码,减少代码的修改和重构,从而提高代码的可维护性和可重用性。但是,适配器模式也会增加系统的复杂度,需要额外的适配器类来协调两个不兼容的接口,在设计时需要慎重考虑其使用场景和影响。
简单实现 大概的构思图
这是影像数据输出接口 (只输出数据啊 不负责显示!!!)
public interface IComputerOuputContent { String toDisplayData () ; }
适配器接口类 (数据转换器接口类)
1 2 3 public interface IVideoAdapter { String convertData () ; }
输出数据接口实现类 电脑
一台电脑implements很多接口 比如各种输入接口(键盘输入接口 鼠标输入接口) 输出接口 (显示屏内容输出接口 音频输出接口)
当然我这里只实现了影像输出接口
1 2 3 4 5 6 7 8 public class Computer implements IComputerOuputContent { @Override public String toDisplayData () { return "1101010101010101010" ; } }
适配器类 就是把电脑给的数据转化为图像的东东
computer(电脑)输出的1101010101010101010
是 Displayer(显示器)不能直接显示的内容
adapter(适配器) 应运而生 这个adapter是可以做很多事情的 但是我只实现了IVideoAdapter(影像数据适配(转换)功能) 当然你还可以implements别的功能,Adapter(适配器)负责把computer(电脑)输出的数据解码成Displayer(显示器)能理解的编码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class Adapter extends Computer implements IVideoAdapter { @Override public String convertData () { String displayData = this .toDisplayData(); displayData = displayData.replace("1101010101" , "你" ) .replace("010101010" , "好" ); return displayData; } }
显示器类
输出转换后Displayer(显示器)能理解的编码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class Displayer { private IVideoAdapter videoAdapter; public void setVideoAdapter (IVideoAdapter videoAdapter) { this .videoAdapter = videoAdapter; } public void view () { System.out.println(videoAdapter.convertData()); } }
main方法测试一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Main { public static void main (String[] args) { Displayer displayer = new Displayer (); displayer.setVideoAdapter(new Adapter ()); displayer.view(); } }
输出内容
懒得敲代码的人可以到这里下载https://download.csdn.net/download/Mo_0214/12536851