gpt4 book ai didi

design-patterns - 对象 C++ 中的状态或观察者模式

转载 作者:行者123 更新时间:2023-12-04 07:00:57 26 4
gpt4 key购买 nike

我只是对观察者和状态模式之间的区别有点困惑。我得到了一个项目,其中客户端是飞行中的飞机,它计算不同传感器的数据,例如 GPS、速度、油位,然后将数据发送到网络,然后发送到服务器。目前我已经在我的类图中使用了观察者模式。可以从下面查看类图,请告诉我我的解决方案是否正确以及选择的设计模式是否适合该解决方案。 Class Diagram

最佳答案

I am just a bit confused with the difference between the observer and state pattern



观察员 当您有一个对象或一组对象(称为观察者)想要通知/更新一个或多个对象(称为可观察对象或主体)的状态变化时,通常使用模式。在您的示例中, Network是想要了解飞机数据变化的观察者。另一方面,飞机数据对象,如 Speed , GPS等是 Network 的 Observable 或 Subjects想要跟踪变化。 (您的术语似乎被颠倒了)。每当飞机数据如其 Speed变化, Network必须通过相应的 Speed 对象通知此更改。

国家另一方面,模式主要用于当您的用例可以表示为有限状态机时。在您的示例中,飞机的整个起飞、飞行和着陆过程可以用有限状态机表示,其中包含着陆、起飞、飞行中、着陆等逻辑状态。

现在应该很清楚,观察者和状态模式在您的案例中都有一个有效的应用程序,观察者模式适合您在问题中描述的主要问题陈述。也就是说,不需要有单独的 Observable 对象,例如速度、GPS 等。你可以有一个名为 FlighData 的 Observable 对象。它具有速度、GPS、engineFuelLevel、engineTemp 等属性。

我还建议您在应用程序中实现观察者模式之前更好地理解观察者模式。以下是一些入门链接:
  • Observer pattern in C++
  • Understanding and implementing the Observer pattern in C++
  • 关于design-patterns - 对象 C++ 中的状态或观察者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41451248/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com