用于监视多个对象的设计模式

时间:2015-08-05 11:37:17

标签: design-patterns

我有一个多线程应用程序,一个拥有多个对象的线程 - 定期更新它们。另一个线程必须访问这些对象并将其用于某些操作。哪种模式适合我的需要?

2 个答案:

答案 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);