请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对po、dao、domain、service的理解

1、po:其实就是将数据库表字段映射到一个struct中,作为最基础的数据结构
2、dao:就是对po的一些增删改查的操作,php四层代码架构中的model其实就
是po、dao的结合体
3、service:这门课程中的service更像是定义除表字段外的其他数据结构,比如
数据传输对象DTO,不涉及任何业务逻辑,而这一点在php的四层代码架构
中,service主要处理业务逻辑
4、domain:这门课程里的domain更像是php四层代码架构中的service,主
要处理业务逻辑

对于service和domain的理解,不知道我这么理解,是否准确,请老师指正,

正在回答 回答被采纳积分+3

1回答

枫荇 2020-03-27 13:47:29

同学您好,po和dao理解是准确的,service和domain理解上有误:

domain:领域对象,包括了业务数据和业务行为,和java中提到的OO一致,通常domain是有状态的。领域对象用来处理业务逻辑,但只处理领域内业务逻辑,不做跨领域业务逻辑,比如订单和库存是2个领域,那么在订单下单逻辑中只包括订单相关的逻辑处理,不包括扣库存的逻辑。

service:是一种泛化的服务对象,通常用来处理泛化的业务逻辑,不同的分层架构中,其service职责不一样;在三层架构中,service中包含了领域逻辑和应用业务逻辑;在四层架构中,service处理应用业务逻辑,通常是多领域业务组合或编排,以及跨领域的逻辑处理,比如下单后发送扣库存消息,比如下单后发送短信通知等逻辑。但也会根据微服务架构的不同,service职责也会有一些变化,只要满足单一职责面向对象设计就是一种好的实践。

0 回复 有任何疑惑可以回复我~
  • 提问者 梦飞_0002 #1
    这么说的话,domain更像是对业务进行分类和分解,不同domain只负责某一个子任务(单一职责);而service则负责调用不同的domain来实现某个复杂的业务,这么说的话,service是位于controller和domain之间。的确在以往的开发中我也曾有意无意的将一些复杂的service进一步抽象,拆分成若干个更小的service,比如订单service、消息通知service,然后还有一个更上层的service调用多个子service。其实这些小service在这里就可以理解为domain了吧?而最上层的service才是实际意义上的service吗?
    回复 有任何疑惑可以回复我~ 2020-03-27 14:16:48
  • 提问者 梦飞_0002 #2
    看了下老师的部分domain代码,感觉跟我以往将复杂service拆分为多个职责更单一的子service还有点不同,区别在于我以往对service拆分都是无状态的,只有业务行为,而不包含业务数据;这里的domain包含业务数据和业务行为,因为涉及到业务数据,自然就变成有状态了。我这种说法可能还是很奇怪~~
    回复 有任何疑惑可以回复我~ 2020-03-27 14:34:56
  • 枫荇 回复 提问者 梦飞_0002 #3
    也不能这么理解
    
    domain是按照业务领域维度的业务逻辑,根据这个业务为维度。不是按照业务复杂程度来拆分为维度。
    回复 有任何疑惑可以回复我~ 2020-03-27 14:41:47
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信