
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
规范性是大多数程序员在开发软件的时候都需要遵守的一个编程开发规则,而本文我们就通过案例分析来简单了解一下,领域驱动设计编程规范方法分享。
1、Api模块编码规范:
Api模块是专门用于定义对外接口的模块,所以这个模块中只包含接口定义,出入参定义,尽量不依赖其他包。
Api中的接口定义类以xxxxResource(或者xxxxService)结尾。这条规范完全是为了和老的应用保持一致。
Api接口的入参尽量不要使用Java中的原子类型(PrimitiveType),需要将入参定义为单独的类。好是继承现有的BaseRequest类。
Api接口的出参统一使用泛型类对真实的返回类型进行包装。
出入参类都以DTO结尾。
出入参中尽量不适用枚举值类型的成员变量。
2、Adapter/Controller模块编码规范:
这一层中需要将出入参的DTO和业务层的VO/DO对象进行转换。
这一层不要包含任何的业务逻辑,只包含参数转换和业务无关的校验逻辑。
接口返回值缓存类的逻辑,可以放在这个模块中实现,因为这个动作不包含业务逻辑。
3、App模块编码规范:
这个模块中的类统一以Case结尾。
这一层主要是对底层业务逻辑进行编排。可以直接调用Domain层的port定义。跨域的服务调用也可以放在这个模块中。
这一层可以直接调用Domain模块中定义的Repository服务。
事务处理:如果是跨多个聚合的业务逻辑需要放在一个事务中,需要在这一层开启和提交事务。
4、Domain层编码规范:
DomainService命名统一以Service为后缀。
Entity实体类的命名不用后缀。值对象类的定义统一以VO结尾。
DomainService逻辑中可以调用Repository和Port中定义的接口。
DomainService可以操作多个聚合,实体和值对象。
Entity实体类可以有构造函数,builder,getters。不要直接放开所有属性的setters,防止业务代码随意修改实体的属性。
编写业务逻辑需要遵守原则:优先将业务逻辑放在Entity和VO中,然后才是放在聚合中,后才放在DomainService中。
依赖反转原则:Domain层依赖的外部接口都要定义在Domain模块的port包中。Domain层只面向接口编程,不依赖接口实现类。
5、Adapter/Repository和Rpc模块编码规范:
Repository实现类中需要将接口入参中的DO对象转换为PO对象后再调用数据库存储。
Repository和聚合的关系是一对一的关系。一个Repository有的对应的聚合。
如果Repository中需要开始事务可以在Repository实现类中开启事务。
Rpc层好是对外部接口的出参和入参定义一个防腐层对象,命名统一以DTO结尾。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。