观察者设计模式和其他

时间:2010-06-27 19:11:27

标签: c++ design-patterns observer-pattern

我开始阅读有关设计模式并尝试将它们应用于某些编码的内容。我已经阅读过观察者模式,并认为它是最有用的一个。

我的两个问题是: 1)如果我希望我的对象既是观察者又是主体,那么它只是一个让它从观察者和主体类继承的问题吗?假设我在军队中有几个单位,我希望他们能够快速向对方发送本地更新。它是否像我描述的那样工作,还是完全需要另一种模式?

2)如果一个物体需要与许多不同性质的物种进行交流(比如一般需要与他的部队,部队领导者等进行交流),观察者模式是否仍然有效?我想这只是一个实施问题,但我不知道......

2 个答案:

答案 0 :(得分:2)

通常,观察者模式是关于应用分层方法:更高级别的对象控制较低级别的对象并且它是观察者,因此它可以对较低级别对象的已更改状态作出反应。
在您的情况下,您希望对等体之间进行通信,并且您希望所有对象彼此了解,因此观察者不会添加实际值 如果在知道如何处理更新的单元之上存在控制对象,Observer将更好地工作。

当然,您可以自行决定哪种情况更适合您的情况。

顺便说一句,检查boost signals作为观察员的实施

答案 1 :(得分:1)

  

1)如果我希望我的对象都是一个   观察者和主体,它只是一个   让它继承的问题   观察者和主体   类?

烨。

  

2)如果对象需要通信   具有许多不同性质的类型   观察者模式是否仍然有效?

烨。

如果您切换到.NET / C#,可以使用一个很好的库来响应/处理来自observables的事件:Rx http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx