关注与责任之间的差异(即SRP与SoC之间的差异)?

时间:2012-10-14 20:34:22

标签: design-patterns separation-of-concerns single-responsibility-principle

  

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

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

b)如果 a)下的假设是正确的,关注责任之间的区别是什么(除了<< em>责任存在于较低的抽象层次)?

谢谢

2 个答案:

答案 0 :(得分:1)

这就是我查看它们的方式 - 相同的原则,通常在不同的抽象层次上引用。

答案 1 :(得分:1)

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

然而,这就是我要说的: 我只知道交叉切割问题。虽然关注的基本思想是,如你所说的那样,任何一种兴趣或焦点都集中在一个程序中,如果它们不是交叉的话,这些问题会成为责任吗?

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

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