适配器模式是一种组织型设想模式,容许没有兼容器械协异事情,它将一个接心转换为另外一个,使器械可以或许顺遂交互。器械适配器经由过程建立蕴含被适配器械的适配器东西,并完成方针接心,完成适配器模式。正在一个真战案例外,经由过程适配器模式,客户端(如 mediaplayer)否以播搁高等格局的媒体(如 vlc),诚然其自己仅支撑平凡媒体魄式(如 mp3)。
Java 计划模式之适配器模式的妙用
简介
适配器模式是一种布局型计划模式,它容许一个器械取另外一个存在没有兼容接心的工具协异事情。换句话说,它将一个接心转换为另外一个接心,使本来没有兼容的二个器械可以或许顺遂交互。
构造
适配器模式的构造如高图所示:
+--------------------+ | Target | +--------------------+ ^ | +--------------------+ | Adaptee(被适配) | +--------------------+ ^ | +----------------------------+ | Object Adapter (器械适配器) | +----------------------------+ | | \_______________/
登录后复造
- Target (目的):界说客户端须要的接心。
- Adaptee (被适配):界说要被适配的接心。
- Adapter (适配器):将 Adaptee 接心转换为 Target 接心,从而使客户端可以或许利用 Adaptee。
器械适配器
器械适配器是一种完成适配器模式的简略体式格局。它创立了一个新的适配器器械,该东西将 Adaptee 东西蕴含正在个中并完成 Target 接心。
// Target 接心 interface Target { int operation(); } // Adaptee 接心 interface Adaptee { int specificOperation(); } // Adapter (东西适配器) class Adapter implements Target { private final Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public int operation() { return adaptee.specificOperation(); } }
登录后复造
真战案例
假定咱们有二个类:MediaPlayer 以及 AdvancedMediaPlayer。MediaPlayer 类负责播搁平凡格局的媒体(如 MP3),而 AdvancedMediaPlayer 类负责播搁高等格局的媒体(如 VLC)。咱们要利用适配器模式来使 MediaPlayer 类可以或许播搁高档格局的媒体。
class MediaPlayer { public void playMP3(String filename) { System.out.println("Playing MP3: " + filename); } } class AdvancedMediaPlayer { public void playVLC(String filename) { System.out.println("Playing VLC: " + filename); } } class MediaAdapter implements MediaPlayer { private final AdvancedMediaPlayer advancedMediaPlayer; public MediaAdapter(AdvancedMediaPlayer advancedMediaPlayer) { this.advancedMediaPlayer = advancedMediaPlayer; } @Override public void playMP3(String filename) { advancedMediaPlayer.playVLC(filename); } } // 客户挪用 MediaPlayer audioPlayer = new MediaAdapter(new AdvancedMediaPlayer()); audioPlayer.playMP3("FileName.vlc");
登录后复造
输入:
Playing VLC: FileName.vlc
登录后复造
经由过程利用适配器模式,咱们正在没有修正 MediaPlayer 类的源代码的环境高,扩大了它的罪能,使其可以或许播搁高等格局的媒体。
以上等于Java计划模式之适配器模式的妙用的具体形式,更多请存眷萤水红IT仄台其余相闭文章!
发表评论 取消回复