当不需要实现接口提供的所有方法时,我们可以首先设计一个抽象类来实现接口,并为接口中的每个方法提供一个默认实现(空方法)。然后抽象类的子类可以有选择地重写父类的一些方法来实现需求。它适用于接口不希望使用其所有方法的情况。因此,也称为单接口适配器模式。
# 1、修改配置文件 [root@zabbix2 ~]# egrep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf PidFile=/var/run/zabbix/zabbix_agent2.pid LogFile=/var/log/zabbix/zabbix_agent2.log LogFileSize=0 Server=192.168.15.112 ServerActive=192.168.15.112 Hostname=zabbix2 Include=/etc/zabbix/zabbix_agent2.d/*.conf ControlSocket=/tmp/agent.sock # 2、重启服务 [root@zabbix2 ~]# systemctl restart zabbix-agent2.service # 下载源码包 (如果下载速度过慢可以把地址替换为我们提供的地址:http://42.194.184.212:5212/#/s/4dHZ) wget https://download.qemu.org/qemu-5.0.0.tar.xz # 解压 tar xvJf qemu-5.0.0.tar.xz # 编译安装并配置 RISC-V 支持 cd qemu-5.0.0 ./configure --target-list=riscv32-softmmu,riscv64-softmmu make -j$(nproc) sudo make install
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); } } }
与类适配器模式相比,替换适配器类的方法并不容易。如果我们必须替换adapter类的一个或多个方法,我们必须生成adapter类的子类,替换adapter类的方法,然后将adapter类的子类改编为真正的适配器。实施过程更为复杂。