【发布时间】:2013-01-19 12:53:06
【问题描述】:
我只是盯着 Poco 框架。我有另一个底层框架,它已经在使用 Poco 框架并抽象了它的某些部分以使其更加容易。
我想用一个简单的场景来解释这个问题:
考虑我的程序中有一个矩形对象。该形状内部具有私有 hit Testing 方法,并且在命中测试为真一段时间后,我不得不在另一个类中触发一个函数,即我的 Fountain 类。
我不需要将任何特定的形状对象信息传递给Fountation 类中的函数。我的框架已经为我提供了NotifyEvent 和AddListener 的一些功能。如果我采用这种方法,我的形状类中会有一个事件,该事件将在喷泉中由 Add Listener 订阅(如果通过了形状,则为对象)和形状内的事件 notified类。
现在,使用 Poco 通知中心,我不会将形状对象引用传递给基础类,而是将 NotificationCenter 引用传递给第二个类。然后fountain 类将有一个观察者,观察者将从形状中收到postNotification()
我在这里看到的两种方法之间的唯一区别是不传递特定的对象信息。
我只是这里的新手开发人员,尽可能地学习良好的编码实践,并不清楚这里的解耦。这两个类在这里是如何解耦的? (因为我没有传递shape 对象而只是使用notificationcenter 对象?)
编辑:添加到上述问题。假设我有 10 个其他类必须收听某个通知,那么我还必须将 Notification Center 的引用传递给所有这些类吗?只有这样我才能在我的课程中为通知中心添加观察者。
【问题讨论】: