我正在应用程序中创建一些业务逻辑,但我不确定如何或在哪里封装它。我已经使用了存储库模式进行数据访问。我看到一些使用DDD的项目,有一些类带有“Service”后缀和“manager”后缀,这些类在DDD中应该负责什么?
我正在应用程序中创建一些业务逻辑,但我不确定如何或在哪里封装它。我已经使用了存储库模式进行数据访问。我看到一些使用DDD的项目,有一些类带有“Service”后缀和“manager”后缀,这些类在DDD中应该负责什么?
尽可能具体地命名。通常,我会避免使用“Manager”这一名称,因为其含义非常模糊。
典型的业务逻辑执行者/名词包括Validators(验证器)、Rules(规则)、Providers(提供程序)、Supervisors(监管员)、Importers/Exporters(导入/导出程序)、Serializers(序列化程序)、Processors(处理交易)以及Repositories(最后一个你已经有了)。如果单个类执行多于一种功能,则应该将其拆分成子类。
你问了一个问题,“这些类负责什么?”事实上,这就是关键所在。SomethingManager
这样的命名对你毫无意义。另一方面,像OrderValidator
和CustomerHistoryExporter
这样的名称相当清楚地说明了类的功能。服务属于灰色地带;如果服务以被动动作命名,例如ShippingService
,那么它处理的内容就相当明确,但更好的名称可能是ShipmentDispatcher
。希望你能理解我的想法。