适配器模式

      适配器模式的主要作用是将一个类的接口转换成用户所期待的。一个适配器通常允许因为接口不兼容而不能一起工作的类能够在一起工作,所以适配器模式的使用场景一般都是做各种标准化平台的时候使用,目的是将一组同类型接口经过简单的封装转换改装成一个统一标准的接口。

/**
 * @desc 外部系统获取发票入口
 * @date 2020年9月7日
 * @author liujl
 */
public interface PlatformInvoice {
	
	/**
	 * @param taxNo 税号
	 * @return
	 */
	String getInvoiceInfo(String taxNo);
	
}
/**
 * @desc 平台查询发票的实现类
 * @date 2020年9月7日
 * @author liujl
 */
public class PlatformInvoiceInfo implements PlatformInvoice {

	@Override
	public String getInvoiceInfo(String taxNo) {
		String invoiceInfo = "{\"FPDM\": \"1100181130\",\"FPHM\": \"16622939\"}";
		return invoiceInfo;
	}

}
/**
 * @desc 模拟外部系统发票接口
 * @date 2020年9月7日
 * @author liujl
 */
public interface OutOSSystemInvoice {
	
	String queryInvoiceByTaxNo(String taxNo);

}
/**
 * @desc 模拟外部系统实现
 * @date 2020年9月7日
 * @author liujl
 */
public class OutOSSystemInvoiceInfo implements OutOSSystemInvoice {

	@Override
	public String queryInvoiceByTaxNo(String taxNo) {
		String invoiceInfo = "<InvoiceInfo><InvoiceCode>111</InvoiceCode><InvoiceNo>112</InvoiceNo></InvoiceInfo>";
		return invoiceInfo;
	}

}
/**
 * @desc 发票适配器
 * @date 2020年9月7日
 * @author liujl
 */
public class OutOSSystemInvoiceAdapter extends OutOSSystemInvoiceInfo implements PlatformInvoice{

	@Override
	public String getInvoiceInfo(String taxNo) {
		String xmlInvoiceInfo = super.queryInvoiceByTaxNo(taxNo);
		String jsonInvoice = convertToJSON(xmlInvoiceInfo);
		return jsonInvoice;
	}

	/**
	 * @param xmlInvoiceInfo
	 * @return
	 */
	private String convertToJSON(String xmlInvoiceInfo) {
		// 将xml格式的发票信息转换成json格式,并将标识符进行统一转换
		return null;
	}

}
/**
 * @desc 模拟客户端
 * @date 2020年9月7日
 * @author liujl
 */
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 客户想获取发票的时候只需要调用同一个接口 getInvoiceInfo就可以获取到统一格式的发票
		String taxNo = "AD98F0D0D88213";
		// 从平台获取发票
		PlatformInvoice o1 = new PlatformInvoiceInfo();
		String invoices = o1.getInvoiceInfo(taxNo);
		// 从外部系统获取发票
		PlatformInvoice o2 = new OutOSSystemInvoiceAdapter();
		String outOsInvoices = o2.getInvoiceInfo(taxNo);
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值