使用带推或拉的观察者设计模板
Using an observer design template with push or pull
我正在独立学习软件工程的基础知识。
还有一些我对观察者设计模板不了解的地方。
我有这个图,在这个图中我标记了每个部分说的是什么,无论是观察者,主题,具体观察者还是适配器。
看这张图我没看懂是push还是pull的模型。
在我看来,这是一个拉动,但我不确定。
我认为这是 Pull,因为我们通知我们的 Observers 发生了变化,然后 Observers 去检查变化是什么并询问主题的状态。
如果你能帮助我,我会很高兴。
显然 ColourHandler
是一个主题,ColourSelector
是它的观察者。 Colour
本身就是一个简单的数据结构。我不知道为什么它会有 set_colour()
方法。枚举就足够了。 Adapter是一个独立的设计模式,与Observer无关。
未显示 update()
方法的实现;但是,我们可以看到它不需要参数。这是 拉取 模型的强烈指示:ColourSelector
必须查询 ColourHandler
以确定新的 Colour
。另一个迹象是 Subject 和 Observer 之间的循环依赖。在 push 模型中,Observer 不需要耦合到 Subject。
另见 push vs pull 的 GoF 描述。
我正在独立学习软件工程的基础知识。 还有一些我对观察者设计模板不了解的地方。
我有这个图,在这个图中我标记了每个部分说的是什么,无论是观察者,主题,具体观察者还是适配器。
看这张图我没看懂是push还是pull的模型。 在我看来,这是一个拉动,但我不确定。 我认为这是 Pull,因为我们通知我们的 Observers 发生了变化,然后 Observers 去检查变化是什么并询问主题的状态。
如果你能帮助我,我会很高兴。
显然 ColourHandler
是一个主题,ColourSelector
是它的观察者。 Colour
本身就是一个简单的数据结构。我不知道为什么它会有 set_colour()
方法。枚举就足够了。 Adapter是一个独立的设计模式,与Observer无关。
未显示 update()
方法的实现;但是,我们可以看到它不需要参数。这是 拉取 模型的强烈指示:ColourSelector
必须查询 ColourHandler
以确定新的 Colour
。另一个迹象是 Subject 和 Observer 之间的循环依赖。在 push 模型中,Observer 不需要耦合到 Subject。
另见 push vs pull 的 GoF 描述。