作者 朱兆平

适配器模式

  1 +package com.sy.model;
  2 +
  3 +public enum BusinessTypeEnum {
  4 + /**
  5 + * 业务类型枚举
  6 + * todo: 代码暂时不正确
  7 + */
  8 + IMPORT_LOCAL_DELIVER("进口提货","100001"),
  9 + EXPORT_LOCAL("出口送货","100002");
  10 + /**
  11 + * 业务类型
  12 + */
  13 + private String name;
  14 + /**
  15 + * 对应金二业务代码
  16 + */
  17 + private String code;
  18 +
  19 + BusinessTypeEnum(String name, String code) {
  20 + this.name = name;
  21 + this.code = code;
  22 + }
  23 +
  24 + public String getName() {
  25 + return name;
  26 + }
  27 +
  28 + public String getCode() {
  29 + return code;
  30 + }
  31 +}
  1 +package com.sy.service;
  2 +
  3 +/**
  4 + * @author mrz
  5 + * 描述:抬杆放行判定接口
  6 + */
  7 +
  8 +public interface BayonetReleaseCheck {
  9 +
  10 + /**
  11 + * 车辆过卡信息抬杆指令判定_适配器
  12 + * @param businesstype 申请业务类型
  13 + * @param ieType 进出卡口类型 I 进 E 出
  14 + */
  15 + public void bayonetCrossCheck(String businesstype,String ieType);
  16 +
  17 +
  18 + /**
  19 + * 车辆信息及车辆备案及黑名单判定
  20 + * @param veName 车牌号
  21 + */
  22 + public void veInfoCHeck(String veName);
  23 +}
  1 +package com.sy.service;
  2 +
  3 +/**
  4 + * @author mrz
  5 + * 描述:抬杆放行判定适配器
  6 + */
  7 +
  8 +public interface BayonetReleaseCheckAdvanced {
  9 +
  10 + /**
  11 + * 进口清关提货
  12 + * 车辆过卡信息抬杆指令判定_适配器
  13 + * @param ieType 进出卡口类型 I 进 E 出
  14 + */
  15 + public void importLocalDelivery(String ieType);
  16 +
  17 + /**
  18 + * 出口清关送货
  19 + */
  20 + public void exportLocalCustoms(String ieType);
  21 +
  22 +}
  1 +package com.sy.service.adapter;
  2 +
  3 +import com.sy.service.BayonetReleaseCheck;
  4 +import com.sy.service.BayonetReleaseCheckAdvanced;
  5 +
  6 +/**
  7 + * 车辆过卡路由适配器
  8 + * @author mrz
  9 + * @date 2022-08-07
  10 + */
  11 +public class BayonetReleaseCheckAdapter implements BayonetReleaseCheck {
  12 + private static final String IMPORT_LOCAL_DELIVER = "进口提货";
  13 + private static final String EXPORT_LOCAL = "出口送货";
  14 +
  15 + private BayonetReleaseCheckAdvanced bayonetReleaseCheckAdvanced;
  16 +
  17 + public BayonetReleaseCheckAdapter(String businesstype) {
  18 + switch (businesstype){
  19 + case "进口提货":
  20 + bayonetReleaseCheckAdvanced = new BayonetReleaseCheckImportCustomsClearance();
  21 + break;
  22 + case "出口送货":
  23 + bayonetReleaseCheckAdvanced = new BayonetReleaseCheckExportCustomsClearance();
  24 + break;
  25 + default:
  26 + System.out.println("无法处理的业务类型");
  27 + break;
  28 + }
  29 +
  30 + }
  31 +
  32 + @Override
  33 + public void bayonetCrossCheck(String businesstype, String ieType) {
  34 + switch (businesstype){
  35 + case "进口提货":
  36 + bayonetReleaseCheckAdvanced.importLocalDelivery(ieType);
  37 + break;
  38 + case "出口送货":
  39 + bayonetReleaseCheckAdvanced.exportLocalCustoms(ieType);
  40 + default:
  41 + break;
  42 + }
  43 + }
  44 +
  45 + @Override
  46 + public void veInfoCHeck(String veName) {
  47 +
  48 + }
  49 +}
  1 +package com.sy.service.adapter;
  2 +
  3 +import com.sy.service.BayonetReleaseCheckAdvanced;
  4 +
  5 +/**
  6 + * 本地出口清关适配器处理器
  7 + */
  8 +public class BayonetReleaseCheckExportCustomsClearance implements BayonetReleaseCheckAdvanced {
  9 +
  10 + private static final org.slf4j.Logger log4 = org.slf4j.LoggerFactory.getLogger(BayonetReleaseCheckExportCustomsClearance.class);
  11 +
  12 +
  13 + @Override
  14 + public void importLocalDelivery( String ieType) {
  15 + log4.info("[Adapter]-进口-{}-本地-清关适配器处理,什么也不做",ieType);
  16 +
  17 + }
  18 +
  19 + @Override
  20 + public void exportLocalCustoms(String ieType) {
  21 + log4.info("[Adapter]-出口-{}-本地-清关适配器处理,处理出口送货清关业务",ieType);
  22 +
  23 + }
  24 +}
  1 +package com.sy.service.adapter;
  2 +
  3 +import com.sy.service.BayonetReleaseCheck;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
  6 +
  7 +/**
  8 + * 业务类型抬杆指令处理入口
  9 + * @author mrz
  10 + */
  11 +public class BayonetReleaseCheckHandle implements BayonetReleaseCheck {
  12 + private static final Logger log4 = LoggerFactory.getLogger(BayonetReleaseCheckHandle.class);
  13 +
  14 + private BayonetReleaseCheckAdapter bayonetReleaseCheckAdapter;
  15 +
  16 + @Override
  17 + public void bayonetCrossCheck(String businesstype, String ieType) {
  18 +
  19 + bayonetReleaseCheckAdapter = new BayonetReleaseCheckAdapter(businesstype);
  20 + bayonetReleaseCheckAdapter.bayonetCrossCheck(businesstype,ieType);
  21 +
  22 + }
  23 +
  24 + @Override
  25 + public void veInfoCHeck(String veName) {
  26 +
  27 + }
  28 +}
  1 +package com.sy.service.adapter;
  2 +
  3 +import com.sy.service.BayonetReleaseCheckAdvanced;
  4 +
  5 +/**
  6 + * 进口清关适配器处理器
  7 + */
  8 +public class BayonetReleaseCheckImportCustomsClearance implements BayonetReleaseCheckAdvanced {
  9 +
  10 + private static final org.slf4j.Logger log4 = org.slf4j.LoggerFactory.getLogger(BayonetReleaseCheckImportCustomsClearance.class);
  11 +
  12 + @Override
  13 + public void importLocalDelivery( String ieType) {
  14 + log4.info("[Adapter]-进口-{}-本地-清关适配器处理,处理本地清关业务",ieType);
  15 + }
  16 +
  17 + @Override
  18 + public void exportLocalCustoms(String ieType) {
  19 + log4.info("[Adapter]-出口-{}-本地清关适配器处理,什么也不做",ieType);
  20 +
  21 + }
  22 +}
  1 +package com.sy.service.impl;
  2 +
  3 +import com.sy.service.adapter.BayonetReleaseCheckHandle;
  4 +import org.junit.jupiter.api.Test;
  5 +
  6 +
  7 +class BayonetReleaseCheckTest {
  8 +
  9 + @Test
  10 + void bayonetCrossCheck() {
  11 + BayonetReleaseCheckHandle bayonetReleaseCheck = new BayonetReleaseCheckHandle();
  12 + bayonetReleaseCheck.bayonetCrossCheck("进口提货","I");
  13 + bayonetReleaseCheck.bayonetCrossCheck("出口送货","I");
  14 + }
  15 +}