3

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

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

b)如果a )下的假设是正确的,那么关注点责任之间有什么区别(除了责任存在于较低抽象级别的事实)?

谢谢

4

2 回答 2

1

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

于 2012-10-15T01:43:41.803 回答
1

好问题。:) 免责声明:只是我的想法。我之前没有考虑过区别。我认为这两个概念之间没有太大区别。

然而,我想说的是:我只知道横切关注点。尽管如您所说,关注点的基本概念是程序中的任何兴趣或关注点,但如果关注点不是横切的,它们是否会成为责任?

我认为原理是一样的。甚至我的理解也和你一样。在购物车系统中,将商品添加到购物车可以被视为一个问题……这是用例应该做的主要事情。所涉及的类并不真正关心日志记录、安全性等。即使没有日志记录,也可以向该类添加一个项目。但是对于购物车或服务必须公开添加项目的功能,否则用例将失败。同样,对于日志记录用例,如果记录器未能记录活动,则意味着日志记录用例不起作用,即使该项目已添加到购物车。

有点像,将商品添加到购物车是谁的责任?(比方说 CartService)如果 AddItemToCart 故事失败,它会被追究责任吗?是的。如果 LogAddItemActivity 失败会追究责任吗?不。 AddItemToCart 故事是否与日志记录活动有关。这是。它可以与 CartService 负责的活动分开吗?模块和类是不同层次的抽象。

于 2012-10-15T09:37:58.807 回答