知识卡片

用户接口层的facade与Assembler:让核心逻辑对多端差异保持稳定

普通读书笔记卡

内容

同一段业务逻辑面向不同前端渠道时,往往需要返回不同的数据形态——面向内部员工的PC端可能要返回对象的全部属性,面向外部客户的移动端可能只需要几个关键属性。如果不加区分地把后端对象所有属性都暴露给所有前端,会有数据外泄风险;但如果为每种前端渠道都单独定制一套应用服务或领域服务,又会制造大量重复代码、让业务逻辑变得混乱、可维护性变差。用户接口层的facade服务和数据组装器Assembler正是为解决这个矛盾而生:facade服务封装应用服务,负责适配不同前端应用的集成技术体系、提供不同类型的服务接口;Assembler则根据不同前端的具体数据需求,完成前端DTO对象和后端DO对象之间的组装转换。有了这一层,几乎不需要调整领域模型的核心领域逻辑,就能灵活地为不同前端提供定制化的接口和数据适配——用户接口层承担了”面向多变外部渠道做适配”这件苦差事,换来的是应用层和领域层的核心逻辑始终保持稳定,不被前端渠道的多样性和易变性所裹挟。

参考来源

- 位置:第10章《DDD分层架构》"10.1.1 用户接口层"(源文件:_epub-src/OEBPS/Text/chapter3-6-1-1.xhtml) - 结论依据:原文说明"facade服务可以封装应用服务,适配不同前端应用的集成技术体系,提供不同类型的服务接口适配,而数据组装器Assembler可以根据不同前端应用的数据需求,完成前端DTO和后端DO对象的组装和转换等操作……用户接口层面向前端应用的灵活的适配能力,可以保证应用层和领域层核心领域逻辑的稳定",直接支撑本卡片结论。 - 原始内容:facade服务可以封装应用服务,适配不同前端应用的集成技术体系,提供不同类型的服务接口适配,而数据组装器Assembler可以根据不同前端应用的数据需求,完成前端DTO和后端DO对象的组装和转换等操作,按需提供数据适配。