【问题标题】:separation of concerns vs loose coupling关注点分离与松散耦合
【发布时间】:2012-05-16 14:17:02
【问题描述】:

我想了解关注点分离和松散耦合之间的区别。

通过关注点分离进行编码是否会产生松散耦合的代码?

谢谢。

【问题讨论】:

标签: design-patterns loose-coupling soc


【解决方案1】:

耦合是关于每个组件对其他组件的了解程度。

关注点分离是将功能的不同方面分离到不同的组件中。您可以分离不同的方面,但让组件紧密耦合(即使用具体类而不是抽象)。

UPDATE:内聚显示了组件的职责是如何密切相关的。当你在不同的组件中分离不同的关注点时,组件的职责是强相关的,因此你有很高的凝聚力。

【讨论】:

  • 没错。 @MoShe 可能不是 Coupling,而是指 Cohesion。
  • 那么是的,通过分离关注点进行编码可以提高代码的凝聚力
  • 如果没有关注点分离,就不可能拥有松耦合系统,但关注点分离并不能保证松耦合系统。
【解决方案2】:

考虑这一点的一个有用方法是,关注点分离决定了每个类/函数应该做什么,而耦合决定了这些类/函数彼此了解多少。

关注点分离与单一职责原则有关,即系统中的每个组件只应负责一件事。

系统中的耦合程度与这些组件如何相互通信有关。他们是否对彼此有很强的了解(紧密耦合),或者他们对彼此的了解是否通过接口/功能绑定/等(松散耦合)抽象出来?松散耦合通常会使系统更容易更改,因为更改系统的一个部分不会影响其他组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2014-07-27
    • 2020-10-26
    • 2011-02-22
    • 2014-03-15
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多