0

好的,所以信号和槽允许一个对象和方法与另一个对象及其方法之间的松散耦合连接。这很好,但是这些信号槽对象作为父类的公共成员存在,因此它们的暴露破坏了松散耦合以创建紧密耦合的代码。这是相当消极的事情。不应该将信号设为私有,以便父类处理信号的连接/断开连接吗?

4

1 回答 1

1

好吧,有些事情需要知道,当eventFooon 发生时ObjectA,需要调用handlerBaron 。ObjectB

在最简单的无委托实现中,该责任是 on ,它在其主体ObjectA中调用。这要求它知道,并且知道这是正确的调用方式。,相反,不需要知道。ObjectB->handlerBareventFooObjectBObjectB->handlerBarObjectBObjectA

在使用信号和槽的一种方法中,责任是 on ObjectB。它负责将其注册handlerBareventFoo信号的处理程序。所以它需要知道ObjectA,但ObjectA不需要知道ObjectB

在另一种方法中,作为插槽ObjectB公开,其他一些代码连接到. 那个“其他代码”需要同时知道和,但谁都不需要知道另一个。handlerBareventFoohandlerBarObjectAObjectB

因此,当有人谈论信号和槽减少耦合时,他们的意思是事件生成对象和事件处理对象不再显式地相互耦合,因为他们的职责之一是保持这种耦合。相反,耦合是由一段单独的代码执行的,该代码负责耦合,并且独立于对象的其余接口。

现在,您提到了“父类”,这让我认为您正在考虑其中一个类已经与另一个类耦合的情况。在这种情况下,公共信号和插槽在减少耦合方面不太有利。

于 2014-10-31T10:49:22.287 回答