您的位置:首页 > 编程语言 > Java开发

设计模式--适配器模式

2016-04-07 00:00 274 查看
摘要: 简单记录适配器模式的使用。

适配器模式(adapter):

将一个类的接口转换成客户期望的另一个接口,让原本不兼容的接口可以合作无间。

示例:

适配德标插座的测试类SocketAdapterTest.java

/**
* 适配德标插座测试类
*
* @author Kevin
* @date 2016-3-15
*/
public class SocketAdapterTest {

public static void main(String[] args) {
/* 德国旅馆 */
GermanyHotel hotel = new GermanyHotel();

/* 国标插座 */
GBSocket gbSocket = new GBSocketImpl();

/* 使用符合德标的适配器 */
DBSocket socketAdapter = new SocketAdapterImpl(gbSocket);
hotel.setDbSocket(socketAdapter);

/* 充电 */
hotel.charge();
}

}

德国旅馆GermanyHotel.java

/**
* 德国旅馆
*
* @author Kevin
* @date 2016-3-15
*/
public class GermanyHotel {

/* 符合德标的插座 */
private DBSocket dbSocket;

public GermanyHotel() {

}

public GermanyHotel(DBSocket dbSocket) {
this.dbSocket = dbSocket;
}

public void setDbSocket(DBSocket dbSocket) {
this.dbSocket = dbSocket;
}

/**
* 充电
*
* @author Kevin
*/
public void charge() {
// 使用德标插口充电
dbSocket.powerWithTwoRound();
}
}

德标插座接口DBSocket.java

/**
* 德标插座接口
*
* @author Kevin
* @date 2016-3-15
*/
public interface DBSocket {

/**
* 使用两项圆头的插座供电
*
* @author Kevin
*/
void powerWithTwoRound();
}

国标插座接口GBSocket.java

/**
* 国标插座接口
*
* @author Kevin
* @date 2016-3-15
*/
public interface GBSocket {

/**
* 使用三项扁头的插座供电
*
* @author Kevin
*/
void powerWithThreeFlat();
}

符合德标的插座DBSocketImpl.java

/**
* 符合德标的插座
*
* @author Kevin
* @date 2016-3-15
*/
public class DBSocketImpl implements DBSocket {

@Override
public void powerWithTwoRound() {
System.out.println("powerWithTwoRound");
}
}

符合国标的插座GBSocketImpl.java

/**
* 符合国标的插座
*
* @author Kevin
* @date 2016-3-15
*/
public class GBSocketImpl implements GBSocket {

@Override
public void powerWithThreeFlat() {
System.out.println("powerWithThreeFlat");
}
}

插座适配器(可以适配德标插座)SocketAdapterImpl.java

/**
* 插座适配器(可以适配德标插座)
*
* @author Kevin
* @date 2016-3-15
*/
public class SocketAdapterImpl implements DBSocket {

/* 符合国标的插座 */
private GBSocket gbSocket;

public SocketAdapterImpl() {

}

public SocketAdapterImpl(GBSocket gbSocket) {
this.gbSocket = gbSocket;
}

@Override
public void powerWithTwoRound() {
gbSocket.powerWithThreeFlat();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息