关注点和责任的区别(即SRP和SoC之间的区别)是什么?

3

SRP - 每个类应该只有一个职责(即更改原因)
关注点分离是将计算机程序分解为尽可能少地重叠功能的不同特征的过程。关注点是程序中任何感兴趣或关注的部分。(关注点 == 系统的特性。)

a)据我理解,两者之间唯一的区别在于 SRP 试图将职责分成不同的,而 SoC 则试图将关注点分成不同的模块

b)如果假设在a)下是正确的,除了职责存在更低层次的抽象之外,关注点职责之间有什么区别?

谢谢。

2个回答

1

这就是我对它们的看法 - 同样的原则,通常在不同抽象层次上引用。


1
很好的问题。 :) 免责声明:这只是我的想法。我以前没有考虑过这个区别。我认为这两个概念之间没有太大的区别。
然而,以下是我的看法: 我只知道“横切”关注点。虽然关注点的基本思想就像你所说的,在程序中任何感兴趣或关注的部分,但如果它们不是横切的,那么这些关注点是否变成了职责呢?
我认为原则是相同的。即使我的理解与你的相同。 在购物车系统中,将商品添加到购物车可以被视为一个关注点...这个用例应该做的主要事情。涉及的类并不真正关心日志记录、安全等等。即使没有日志记录,商品也可以被添加到类中。但对于购物车或服务必须公开添加商品的功能,否则用例将失败。 同样地,对于日志记录用例,如果记录器无法记录活动,这意味着日志记录用例不起作用,即使商品已经添加到购物车中。
有点像,添加商品到购物车的责任是谁的?(假设是CartService)如果AddItemToCart故事失败,它会被追究责任吗?是的。如果LogAddItemActivity失败,它会被追究责任吗?不会。AddItemToCart故事是否涉及记录活动?是的。它可以与CartService负责的活动分开吗? 模块和类是不同级别的抽象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接