Junior — Middle
Программалык инженерияда адаптер үлгүсүнүн колдонулушуна мисал келтире аласызбы?
sobes.tech AI
AIден жооп
Адаптер үлгүсү объекттерге үйлесимсиз интерфейстер менен бирге иштешүүгө мүмкүндүк берет, бир класс интерфейсин кардар күтүп жаткан интерфейске айландыруу аркылуу.
Javaда мисал: бизде MediaPlayer интерфейси бар деп эсептейли, ал play(String audioType, String fileName) деген ыкмасын камтыйт, жана AdvancedMediaPlayer деген класс бар, ал playVlc(String fileName) жана playMp4(String fileName) ыкмаларын камтыйт. AdvancedMediaPlayer'ды MediaPlayer аркылуу колдонуу үчүн, адаптер түзөбүз:
// Максаттуу интерфейс
interface MediaPlayer {
void play(String audioType, String fileName);
}
// Бар интерфейс
interface AdvancedMediaPlayer {
void playVlc(String fileName);
void playMp4(String fileName);
}
// Конкреттүү реализациялар
class VlcPlayer implements AdvancedMediaPlayer {
public void playVlc(String fileName) {
System.out.println("VLC файл ойнотулууда: " + fileName);
}
public void playMp4(String fileName) { }
}
class Mp4Player implements AdvancedMediaPlayer {
public void playVlc(String fileName) { }
public void playMp4(String fileName) {
System.out.println("MP4 файл ойнотулууда: " + fileName);
}
}
// Адаптер
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();
}
}
public void play(String audioType, String fileName) {
if(audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer.playVlc(fileName);
} else if(audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer.playMp4(fileName);
}
}
}
// Клиент
class AudioPlayer implements MediaPlayer {
MediaAdapter mediaAdapter;
public void play(String audioType, String fileName) {
if(audioType.equalsIgnoreCase("mp3")) {
System.out.println("MP3 файл ойнотулууда: " + fileName);
} else if(audioType.equalsIgnoreCase("vlc") || audioType.equalsIgnoreCase("mp4")) {
mediaAdapter = new MediaAdapter(audioType);
mediaAdapter.play(audioType, fileName);
} else {
System.out.println("Кийинки медиа түрү: " + audioType);
}
}
}
Ошентип, AudioPlayer MediaAdapter колдонуп, түздөн-түз колдоого алынбаган форматтарды ойнотуу үчүн, интерфейстердин шайкештигин камсыздайт.