用java代码写个适配器模式
时间: 2023-12-08 10:35:01 浏览: 22
好的,以下是适配器模式的Java代码示例:
```
// 目标接口
interface Target {
void request();
}
// 源接口
class Adaptee {
void specificRequest() {
System.out.println("Adaptee specificRequest");
}
}
// 适配器
class Adapter implements Target {
private Adaptee adaptee;
Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specificRequest();
}
}
// 客户端
public class Client {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.request();
}
}
```
相关问题
运用JAVA代码编写一个适配器模式
好的,以下是一个简单的适配器模式的 Java 代码示例:
首先,我们创建一个待适配的接口:
```
public interface MediaPlayer {
public void play(String audioType, String fileName);
}
```
接下来,我们创建一个具体的类,该类实现了待适配的接口:
```
public class AudioPlayer implements MediaPlayer {
@Override
public void play(String audioType, String fileName) {
if (audioType.equalsIgnoreCase("mp3")) {
System.out.println("Playing mp3 file. Name: " + fileName);
}
}
}
```
然后,我们创建一个适配器类,该类实现了客户端需要的接口:
```
public class MediaAdapter implements MediaPlayer {
AdvancedMediaPlayer advancedMusicPlayer;
public MediaAdapter(String audioType) {
if (audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer = new VlcPlayer();
} else if (audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer = new Mp4Player();
}
}
@Override
public void play(String audioType, String fileName) {
if (audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer.playVlc(fileName);
} else if (audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer.playMp4(fileName);
}
}
}
```
最后,我们创建一个客户端类,该类使用适配器来播放不同类型的音频:
```
public class AudioPlayerAdapterPatternDemo {
public static void main(String[] args) {
AudioPlayer audioPlayer = new AudioPlayer();
audioPlayer.play("mp3", "beyond the horizon.mp3");
audioPlayer.play("mp4", "alone.mp4");
audioPlayer.play("vlc", "far far away.vlc");
audioPlayer.play("avi", "mind me.avi");
MediaPlayer mediaAdapter = new MediaAdapter("vlc");
mediaAdapter.play("vlc", "Far far away.vlc");
}
}
```
在上述代码中,我们创建了一个 AudioPlayer 类,该类实现了 MediaPlayer 接口。然后,我们创建了一个 MediaAdapter 类,该类实现了 MediaPlayer 接口,并使用 AdvancedMediaPlayer 接口实现了适配器模式。最后,我们创建了一个客户端类,该类使用 AudioPlayer 和 MediaAdapter 类来播放不同类型的音频文件。通过适配器模式,我们可以使不兼容的接口能够协同工作。
运用JAVA代码编写一个适配器模式应用场景
适配器模式的一个常见应用场景是在代码重构或者系统升级的时候,需要将旧的代码或者系统与新的代码或者系统进行集成。下面我们来看一个简单的适配器模式的应用场景,假设我们有一个英文单词翻译的接口和一个中文单词翻译的接口,但是我们的客户端只支持英文单词翻译,现在我们需要将中文单词翻译接口适配成英文单词翻译接口。
首先,我们需要定义英文单词翻译接口 `EnglishWordTranslator` 和中文单词翻译接口 `ChineseWordTranslator`。
```java
public interface EnglishWordTranslator {
void translate(String word);
}
public interface ChineseWordTranslator {
void translateChinese(String word);
}
```
然后,我们需要定义一个适配器类 `ChineseToEnglishAdapter`,它实现了英文单词翻译接口,并持有中文单词翻译接口的引用。
```java
public class ChineseToEnglishAdapter implements EnglishWordTranslator {
private ChineseWordTranslator chineseWordTranslator;
public ChineseToEnglishAdapter(ChineseWordTranslator chineseWordTranslator) {
this.chineseWordTranslator = chineseWordTranslator;
}
@Override
public void translate(String word) {
chineseWordTranslator.translateChinese(word);
}
}
```
最后,我们可以在客户端中使用适配器来实现中文单词翻译。
```java
public class Client {
public static void main(String[] args) {
ChineseWordTranslator chineseWordTranslator = new ChineseWordTranslatorImpl();
EnglishWordTranslator englishWordTranslator = new ChineseToEnglishAdapter(chineseWordTranslator);
englishWordTranslator.translate("你好"); // 输出 "Hello"
}
}
```
这样,我们就通过适配器模式将中文单词翻译接口适配成了英文单词翻译接口,使得客户端可以方便地使用中文单词翻译功能。