1、概念说明:
适配器通常用于两个业务依赖时发现,无法如预期进行依赖链接,为了不破坏两个业务的完整性,这个时间就需要一个中间者进行转换,使业务可以顺利连接;
市面上的例子通常通过mac笔记本电脑要连接AVG的显示接头,但mac笔记本自身是不支持的,需要通过转换头(adpater适配器)转换后就可以使用了;但今天我想用电商里的例子来举例,研发的同学都知道,时下流行的微服务,如果我想完成一个下单支付的流程,实际上是会涵盖到order和pay服务、而实际上pay服务对外提供的逻辑是我的功能是支付,你若需要完成支付功能,那你就需要按照我的来,而order呢我就是一个订单,我就想支付而已,我理论上就应该把金额告诉你,你去完成支付就好,你这个pay服务给我一些我看不懂的参数,如商户号、商户名字的信息干什么,我看不懂呀, 这个时候就要adpater来进行适配中转,帮助两个服务之间完成这个操作;详细看下方代码
2、实战
public interface Target {
void OrderToPay(String orderNo, String money);
}
public class Adpaterimplements Target{
Paypay =new Pay();
@Override
public void OrderToPay(String orderNo, String money){
//适配后完成支付请求
pay.toPay(orderNo, money,"商户号1", "商户名字1", "非对称", "无备注");
}
}
public class Pay {
/**
* 任何地方想去支付 都需要告知我这些信息(无论是用户支付、用户充值、用户抽奖支付或其他)
*/
public void toPay(String orderNo, String money,String merhNo, String merName, String secrt, String rmark) {
System.out.println("订单号为:" + orderNo);
System.out.println("商户号为:" + merhNo);
System.out.println("已完成支付,支付金额:" + money);
}
}
public class Actuatory {
public static void main(String[] args) {
Target adpaters =new Adpater();
adpaters.OrderToPay("01","1500");
}
}
执行结果:
订单号为:01
商户号为:商户号1
已完成支付,支付金额:1500
3、思考
适配模式在微服务模式或其他多人协助的工作方式下,一直被称为比较优的解决方案,推荐学习