/**
* 德标接口
*/
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();
Hotel hotel = new Hotel();
SocketAdapter socketAdapter = new SocketAdapter(gbSocket);
hotel.setSocket(socketAdapter);
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();
}
}
关于上面提到的适配器模式实际应用的文章已经完成并发表, 感兴趣的朋友可以看一下, 如果有不合理的地方还请指正。
文章链接 运用适配器模式应对项目中的变化