作者 朱兆平

适配器模式

package com.sy.model;
public enum BusinessTypeEnum {
/**
* 业务类型枚举
* todo: 代码暂时不正确
*/
IMPORT_LOCAL_DELIVER("进口提货","100001"),
EXPORT_LOCAL("出口送货","100002");
/**
* 业务类型
*/
private String name;
/**
* 对应金二业务代码
*/
private String code;
BusinessTypeEnum(String name, String code) {
this.name = name;
this.code = code;
}
public String getName() {
return name;
}
public String getCode() {
return code;
}
}
... ...
package com.sy.service;
/**
* @author mrz
* 描述:抬杆放行判定接口
*/
public interface BayonetReleaseCheck {
/**
* 车辆过卡信息抬杆指令判定_适配器
* @param businesstype 申请业务类型
* @param ieType 进出卡口类型 I 进 E 出
*/
public void bayonetCrossCheck(String businesstype,String ieType);
/**
* 车辆信息及车辆备案及黑名单判定
* @param veName 车牌号
*/
public void veInfoCHeck(String veName);
}
... ...
package com.sy.service;
/**
* @author mrz
* 描述:抬杆放行判定适配器
*/
public interface BayonetReleaseCheckAdvanced {
/**
* 进口清关提货
* 车辆过卡信息抬杆指令判定_适配器
* @param ieType 进出卡口类型 I 进 E 出
*/
public void importLocalDelivery(String ieType);
/**
* 出口清关送货
*/
public void exportLocalCustoms(String ieType);
}
... ...
package com.sy.service.adapter;
import com.sy.service.BayonetReleaseCheck;
import com.sy.service.BayonetReleaseCheckAdvanced;
/**
* 车辆过卡路由适配器
* @author mrz
* @date 2022-08-07
*/
public class BayonetReleaseCheckAdapter implements BayonetReleaseCheck {
private static final String IMPORT_LOCAL_DELIVER = "进口提货";
private static final String EXPORT_LOCAL = "出口送货";
private BayonetReleaseCheckAdvanced bayonetReleaseCheckAdvanced;
public BayonetReleaseCheckAdapter(String businesstype) {
switch (businesstype){
case "进口提货":
bayonetReleaseCheckAdvanced = new BayonetReleaseCheckImportCustomsClearance();
break;
case "出口送货":
bayonetReleaseCheckAdvanced = new BayonetReleaseCheckExportCustomsClearance();
break;
default:
System.out.println("无法处理的业务类型");
break;
}
}
@Override
public void bayonetCrossCheck(String businesstype, String ieType) {
switch (businesstype){
case "进口提货":
bayonetReleaseCheckAdvanced.importLocalDelivery(ieType);
break;
case "出口送货":
bayonetReleaseCheckAdvanced.exportLocalCustoms(ieType);
default:
break;
}
}
@Override
public void veInfoCHeck(String veName) {
}
}
... ...
package com.sy.service.adapter;
import com.sy.service.BayonetReleaseCheckAdvanced;
/**
* 本地出口清关适配器处理器
*/
public class BayonetReleaseCheckExportCustomsClearance implements BayonetReleaseCheckAdvanced {
private static final org.slf4j.Logger log4 = org.slf4j.LoggerFactory.getLogger(BayonetReleaseCheckExportCustomsClearance.class);
@Override
public void importLocalDelivery( String ieType) {
log4.info("[Adapter]-进口-{}-本地-清关适配器处理,什么也不做",ieType);
}
@Override
public void exportLocalCustoms(String ieType) {
log4.info("[Adapter]-出口-{}-本地-清关适配器处理,处理出口送货清关业务",ieType);
}
}
... ...
package com.sy.service.adapter;
import com.sy.service.BayonetReleaseCheck;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 业务类型抬杆指令处理入口
* @author mrz
*/
public class BayonetReleaseCheckHandle implements BayonetReleaseCheck {
private static final Logger log4 = LoggerFactory.getLogger(BayonetReleaseCheckHandle.class);
private BayonetReleaseCheckAdapter bayonetReleaseCheckAdapter;
@Override
public void bayonetCrossCheck(String businesstype, String ieType) {
bayonetReleaseCheckAdapter = new BayonetReleaseCheckAdapter(businesstype);
bayonetReleaseCheckAdapter.bayonetCrossCheck(businesstype,ieType);
}
@Override
public void veInfoCHeck(String veName) {
}
}
... ...
package com.sy.service.adapter;
import com.sy.service.BayonetReleaseCheckAdvanced;
/**
* 进口清关适配器处理器
*/
public class BayonetReleaseCheckImportCustomsClearance implements BayonetReleaseCheckAdvanced {
private static final org.slf4j.Logger log4 = org.slf4j.LoggerFactory.getLogger(BayonetReleaseCheckImportCustomsClearance.class);
@Override
public void importLocalDelivery( String ieType) {
log4.info("[Adapter]-进口-{}-本地-清关适配器处理,处理本地清关业务",ieType);
}
@Override
public void exportLocalCustoms(String ieType) {
log4.info("[Adapter]-出口-{}-本地清关适配器处理,什么也不做",ieType);
}
}
... ...
package com.sy.service.impl;
import com.sy.service.adapter.BayonetReleaseCheckHandle;
import org.junit.jupiter.api.Test;
class BayonetReleaseCheckTest {
@Test
void bayonetCrossCheck() {
BayonetReleaseCheckHandle bayonetReleaseCheck = new BayonetReleaseCheckHandle();
bayonetReleaseCheck.bayonetCrossCheck("进口提货","I");
bayonetReleaseCheck.bayonetCrossCheck("出口送货","I");
}
}
... ...