我有一个多线程应用程序,一个拥有多个对象的线程 - 定期更新它们。另一个线程必须访问这些对象并将其用于某些操作。哪种模式适合我的需要?
答案 0 :(得分:2)
您可能正在寻找Observer Pattern
简而言之,它就像 - 你的主要线索会倾听'事件'由传感器线程生成。所以,步骤可能是:
A)传感器线程公开一个方法,让主线程注册该事件。为此使用接口方法。
B)一旦传感器内的数据发生变化,它就会在主线程上调用一个方法(注意它在步骤A中有参考)。这样,主线程就会知道它的行动时间。
答案 1 :(得分:1)
在Observer模式中,您将拥有一个通知方法
public void Notify()
{
this.observers.ForEach(x => x.Update());
}
你想要的是,观察者(你可以只有一个观察者)了解每个主题,然后它可以记录这些值。因此,您可以将主题传递给Update方法。
public void Notify()
{
this.observers.ForEach(x => x.Update(this));
}
并且,在观察者的Update方法中,您可以记录并检查阈值交叉
public void Update(Subject subject)
{
if(subject.Value > 5)
Log.Write(subject.Value)
}
您可以让多个主题订阅同一个Observer对象。
subject1.Subscribe(observer1);
subject2.Subscribe(observer1);