DDD防腐层的设计

防腐层是在DDD是占有非常重要的作用,具体分析可以见这篇文章,这里就不细说了,但是在Java代码中防腐层应该怎么设计呢?目前比较好的有以下几种。

  • 通过cglib的BeanCopier。
  • 通过Spring的BeanUtils。
  • 通过mapstruct。
  • 硬编码。

下面分别通过例子来看下优缺点,最后做个选择,现在有两个对象,一个是OriginOrder,一个是TargetOrder,需要把OriginOrder转化为TargetOrder。

cglib的BeanCopier

代码如下:

public class CglibBeanCopierConvertor {
   
    private static final BeanCopier copier = BeanCopier.create(OriginalOrder.class, TargetOrder.class, false);

    public static TargetOrder convert(OriginalOrder originalOrder) {
   
        TargetOrder targetOrder = new TargetOrder();
        copier.copy(originalOrder, targetOrder, null);
        return targetOrder;
    }
}

cglib的实现原理见文章

Spring的BeanUtils

代码如下:

public class SpringBeanUtilConvertor {
   
    public static TargetOrder convert(OriginalOrder originalOrder){
   
        TargetOrder targetOrder = new TargetOrder();
        BeanUtils.copyProperties(originalOrder, targetOrder);
        return targetOrder;
    }
}

原理如下: https://blog.youkuaiyun.com/sosozha/article/details/80710174

mapstruct

代码如下:

@Mapper
public interface MapStructConvertor {
   
    MapStructConvertor CONVERTOR = Mappers.getMapper(MapStructConvertor.class);
    @Mappings({
   })
    TargetOrder convert(OriginalOrder originalOrder);
}

原理如下: https://juejin.cn/post/6844904199755415559

硬编码的方式

public class HardCodeConvertor {
   
    public static TargetOrder convert(OriginalOrder originOrder){
   
        if (originOrder == null){
   
            return null;
        }
        TargetOrder targetOrder = new TargetOrder
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值