三、设计模式之适配器

三、设计模式之适配器

适配器模式是使用某个实现类,实现另一种接口的行为,在工作中非常常用。常用到使用时都不知道是在用这个模式。

那么接口可以适配,实体可以适配么?当然,比接口适配更常用的是实体的适配。

场景

你作为渠道层为客户提供REST服务,提供核心服务能力的资源是你的下游。由于各种原因,下游及你客户各报文的字段是不一样的,数据库中的命名及内容与接口也不尽相同,但大多数字段都是一样的。为了不让测试和开发犯难,开启适配之旅吧。

单测

当客户输入DemoDto no字段,我的业务逻辑实体MyInputBo serialNo会被赋值。需要说明的是DemoDto是提供给客户的实体,MyInputBo是包括业务处理逻辑的实体,可以做字段长度的校验等。


public class GivenClientInputSerialNo {
    DemoDto demoDto = new DemoDto();
    @Before
    public void setUp() throws Exception {
        demoDto.setNo("serialNO");
        demoDto.setApp_id("120123");
        demoDto.setId3("id3");
    }
    @Test
    public void should_adapt_to_my_bo() {
        DemoDtoToConvert mapper = Mappers.getMapper(DemoDtoToConvert.class);
        MyInputBo bo = mapper.from(demoDto);
        assertEquals(bo.getAppid(), demoDto.getApp_id());
    } 
}

实现

使用mapstruct,各种类型转换非常方便

@Mapper(componentModel = "spring")
public interface DemoDtoToConvert {
    @Mapping(source = "no", target = "serialNo")
    @Mapping(source = "app_id", target = "appid")
    MyInputBo from(DemoDto order);

}

后续bo、po转换也是一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值