2010-06-27 114 views
0

我开始阅读有关设计模式并尝试将它们应用于某些编码。我已阅读了关于观察者模式,并认为这将是一个最有用的使用。观察者设计模式和其他

我的两个问题是这样的: 1)如果我希望我的对象既是观察者又是主体,那么它只是一个让它从观察者和主题类继承的问题?假设我在部队中拥有多个部队,并且我希望他们能够迅速向对方发送本地更新。它是否像我所描述的那样工作,还是完全需要另一种模式? 2)如果一个物体需要与许多不同性质的类型进行交流(比如一般需要与他的单位,派系领导等进行交流),观察者模式是否仍然有效?我想这也只是实现的问题,但我不知道......

回答

2

通常,观察者模式是关于应用分层方法的:较高级别的对象控制较低级别的对象并且它是观察者,因此它可以对较低级别对象的改变的状态作出反应。
在你的情况下,你需要在同伴之间进行沟通,并且你希望所有的对象彼此了解,所以观察者不会增加真正的价值。
如果在知道如何处理更新的单元上有一个控制对象,Observer将会更好。

当然,这取决于你自己是否会在你的情况下更好地工作。

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

+0

谢谢。从我有限的知识来看,这也是我的想法。但是,让每个单位都拥有指向同一级别所有其他单位的指针集合对我来说似乎并不恰当。 – 2010-06-27 21:52:23

+0

解决方案可能是创建一个可以控制你的单位的军队对象,但其缺点可能是部分逻辑在军队类中,另一部分在单位类中。这仍然是你的决定。 – stefaanv 2010-06-28 07:16:58

1

1)如果我想我的目标是既在 观察员和主题,是单纯的 问题使它从 继承观察者和主题 类?

是。

2)如果一个对象需要与许多类型不同性质的通信 不观察者模式还是工作?

是。

为了防止您切换到.NET/C#,有一个很好的库来处理/处理来自可观察事件的事件:Rx http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx