大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
现实生活中的适配器
实现电源适配器
/**
* 德标接口
*/
public interface DBSocketInterface {
/**
* 这个方法的名字叫做:使用两项圆头的插口供电
* 本人英语就这个水平
*/
void powerWithTwoRound();
}
德国插座实现德标接口
/**
* 德国插座
*/
public class DBSocket implements DBSocketInterface{
public void powerWithTwoRound(){
System.out.println("使用两项圆头的插孔供电");
}
}
德国旅馆是一个客户端,它里面有德标的接口,可以使用这个德标接口给手机充电:
/** * 德国宾馆 */public class Hotel { //旅馆中有一个德标的插口 private DBSocketInterface dbSocket; public Hotel(){} public Hotel(DBSocketInterface dbSocket) { this.dbSocket = dbSocket; } public void setSocket (DBSocketInterface dbSocket){ this.dbSocket = dbSocket; } //旅馆中有一个充电的功能 public void charge(){ //使用德标插口充电 dbSocket.powerWithTwoRound(); }}
public class Test {
public static void main(String[] args) {
//初始化一个德国插座对象, 用一个德标接口引用它
DBSocketInterface dbSoket = new DBSocket();
//创建一个旅馆对象
Hotel hotel = new Hotel(dbSoket);
//在旅馆中给手机充电
hotel.charge();
}
}
运行程序,打印出以下结果: 使用两项圆头的插孔供电
国标接口:
/**
* 国标接口
*/
public interface GBSocketInterface {
/**
* 这个方法的名字叫做:使用三项扁头的插口供电
* 本人英语就这个水平,从有道词典查得, flat意思好像是: 扁的
*/
void powerWithThreeFlat();
}
中国插座实现国标接口:
/**
* 中国插座
*/
public class GBSocket implements GBSocketInterface{
@Override
public void powerWithThreeFlat() {
System.out.println("使用三项扁头插孔供电");
}
}
可以认为这两个东西是我带到德国去的,目前他们还不能使用,因为接口不一样。那么我必须创建一个适配器,这个适配器必须满足以下条件:
public class SocketAdapter
implements DBSocketInterface{ //实现旧接口
//组合新接口
private GBSocketInterface gbSocket;
/**
* 在创建适配器对象时,必须传入一个新街口的实现类
* @param gbSocket
*/
public SocketAdapter(GBSocketInterface gbSocket) {
this.gbSocket = gbSocket;
}
/**
* 将对就接口的调用适配到新接口
*/
@Override
public void powerWithTwoRound() {
gbSocket.powerWithThreeFlat();
}
}
这个适配器类满足了上面的两个要求。下面写一段测试代码来验证一下适配器能不能工作,我们按步骤一步步的写出代码,以清楚的说明适配器是如何使用的。
GBSocketInterface gbSocket = new GBSocket();
2 来到德国后, 找到一家德国宾馆住下 (这个宾馆还是上面代码中的宾馆,使用的依然是德国标准的插口)
Hotel hotel = new Hotel();
3 由于没法充电,我拿出随身带去的适配器,并且将我带来的充电器插在适配器的上端插孔中。这个上端插孔是符合国标的,我的充电器完全可以插进去。
SocketAdapter socketAdapter = new SocketAdapter(gbSocket);
4 再将适配器的下端插入宾馆里的插座上
hotel.setSocket(socketAdapter);
5 可以在宾馆中使用适配器进行充电了
hotel.charge();
public class TestAdapter {
public static void main(String[] args) {
GBSocketInterface gbSocket = new GBSocket();
Hotel hotel = new Hotel();
SocketAdapter socketAdapter = new SocketAdapter(gbSocket);
hotel.setSocket(socketAdapter);
hotel.charge();
}
}
运行上面的程序,打印出以下结果:
总结
关于上面提到的适配器模式实际应用的文章已经完成并发表, 感兴趣的朋友可以看一下, 如果有不合理的地方还请指正。
文章链接 运用适配器模式应对项目中的变化
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160012.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...