范畴模型,指特定业务范畴内,业务规则、策略以及业务流程的抽象和封装。在设计本领上,通过风暴模型拆分范畴模块,形成边界上下文。最大的区别在于把原有的浩繁 Service + 数据模型的方式,拆分为独立的有边界的范畴模块。每个范畴内创建自身所属的;范畴对象(实体、聚合、值对象)、仓储服务(DAO 操作)、工厂、端口适配器Port(调用外部接口的本领)等。
那么,现在这里有几个概念;范畴服务、范畴对象、仓储界说、事件消息、端口适配器。我们先来看他们是怎么从贫血模型演变过来的,在细分解说每个概念。
在原本的 Service + 贫血的数据模型开辟引导下,Service 串联调用每一个功能模块。这些根本设施(对象、方法、接口)是被相互掉调用的。这也是由于贫血模型并没有面向对象的设计,全部的需求开辟只有详细设计。
换到充血模型下,现在我们以一个范畴功能为聚合,拆分一个范畴内所需的 Service 为范畴服务,VO、Req、Res 重新设计为范畴对象,DAO、Redis 等长期化操作为仓储等。举例;一套账户服务中的,授信认证、开户、提额降额等,每一个都是一个独立的范畴,在每个独立的范畴内,创建自身范畴所需的各项信息。
范畴模型另有一个特点,它自身只关注业务功能实现,不与外部任何接口和服务直连。如;不会直接调用 DAO 操作库,也不会调用缓存操作 Redis,更不会直接引入 RPC 连接其他微服务。而是通过仓库和端口适配器,界说调用外部数据的含有出入参对象的接口标准,让根本设施层做具体的调用实现。通过这样的方式让范畴只关心业务实现,同时做好防腐。