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