美文网首页
DDD防腐层概念

DDD防腐层概念

作者: 杨毅 | 来源:发表于2021-06-21 09:04 被阅读0次

    在ApplicationService中,经常会依赖外部服务,从代码层面对外部系统产生了依赖。比如:

    ItemDO item = itemService.getItem(cmd.getItemId());

    boolean withholdSuccess = inventoryService.withhold(cmd.getItemId(), cmd.getQuantity());

    会发现我们的ApplicationService会强依赖ItemService、InventoryService以及ItemDO这个对象。如果任何一个服务的方法变更,或者ItemDO字段变更,都会有可能影响到ApplicationService的代码。也就是说,我们自己的代码会因为强依赖了外部系统的变化而变更,这个在复杂系统中应该是尽量避免的。那么如何做到对外部系统的隔离呢?需要加入ACL防腐层。用外观模式(Facade)将外部包一层提供给内部使用,包括接口、DTO,后续外部接口或者返回字段变动主逻辑不需要修改仅需修改对应的facade

    ACL防腐层的简单原理如下:

    • 对于依赖的外部对象,我们抽取出所需要的字段,生成一个内部所需的VO或DTO类

    • 构建一个新的Facade,在Facade中封装调用链路,将外部类转化为内部类

    • 针对外部系统调用,同样的用Facade方法封装外部调用链路

    相关文章

      网友评论

          本文标题:DDD防腐层概念

          本文链接:https://www.haomeiwen.com/subject/llydyltx.html