首先我们要创建一个 net.haicoder.adapter
包,在该包下面创建 InsuranceCreate.java
、AdvancedOrderCreate.java
、HotelCreate.java
、FlightOrderCreate.java
、OrderCreateAdapter.java
、 OrderCreate.java
和 TestMain.java
文件。
文件创建完毕,目录结构如下图:
InsuranceCreate.java
文件中代码如下:
package net.haicoder.adapter;
/**
* 前期只有保险资源订单方法
*/
public class InsuranceCreate {
public void createInsuranceOrder() {
System.out.println("嗨客网 (www.haicoder.net)");
System.out.println("创建保险订单成功");
}
}
后期酒店资源和机票资源接入进来 AdvancedOrderCreate.java
文件代码如下:
package net.haicoder.adapter;
public interface AdvancedOrderCreate {
/**
* 创建酒店订单
*/
void createHoTelOrder();
/**
* 创建机票订单
*/
void createFlightOrder();
}
HotelCreate.java
文件代码如下:
package net.haicoder.adapter;
/**
* 创建酒店订单
*/
public class HotelCreate implements AdvancedOrderCreate {
public void createHoTelOrder() {
System.out.println("嗨客网 (www.haicoder.net)");
System.out.println("创建酒店订单成功");
}
public void createFlightOrder() {
}
}
FlightOrderCreate.java
文件代码如下
package net.haicoder.adapter;
/**
* 创建机票订单
*/
public class FlightOrderCreate implements AdvancedOrderCreate {
public void createHoTelOrder() {
}
public void createFlightOrder() {
System.out.println("嗨客网 (www.haicoder.net)");
System.out.println("创建机票订单成功");
}
}
定义一个适配类,将创建酒店资源的方法和创建机票资源的方法管理起来,OrderCreateAdapter.java
文件代码如下:
package net.haicoder.adapter;
public class OrderCreateAdapter {
AdvancedOrderCreate advancedOrderCreate;
public OrderCreateAdapter(String orderType) {
if ("flight".equals(orderType)) {
advancedOrderCreate = new FlightOrderCreate();
} else if ("hotel".equals(orderType)) {
advancedOrderCreate = new HotelCreate();
}
}
public void createOrder(String orderType) {
if ("flight".equals(orderType)) {
advancedOrderCreate.createFlightOrder();
} else if ("hotel".equals(orderType)) {
advancedOrderCreate.createHoTelOrder();
} else {
System.out.println("嗨客网 (www.haicoder.net)");
System.out.println("对不起,您创建的订单类型目前没有开通,敬请期待。。。");
}
}
}
创建订单的逻辑代码如 OrderCreate.java
文件
package net.haicoder.adapter;
public class OrderCreate {
public void createOrder(String orderType) {
if ("insurcnce".equals(orderType)) {
new InsuranceCreate().createInsuranceOrder();
} else {
OrderCreateAdapter orderCreateAdapter = new OrderCreateAdapter(orderType);
orderCreateAdapter.createOrder(orderType);
}
}
}
调用的测试方法如 TestMain.java
文件
package net.haicoder.adapter;
public class TestMain {
public static void main(String[] args) {
OrderCreate orderCreate = new OrderCreate();
orderCreate.createOrder("hotel");
}
}
程序运行后,控制台输出如下信息:
设计模式中适配器模式把一个类的方法变换成客户端所期待的另一种方法,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。