【设计模式】观察者模式

观察者模式是一种行为设计模式,它定义了对象之间的一对多关系,当一个对象状态发生改变时,它的所有依赖者(观察者)都会收到通知并自动更新。

以下是实现代码:
// 主题接口

internal interface ISubject
{
    void Add(IObserver obj);
    void Del(IObserver obj);
    void Notify(string msg);
}

// 观察者接口

internal interface IObserver
{
    void Update(string msg);
}

// 具体主题类

internal class ContextSubject : ISubject
{
    List<IObserver> Observers = new List<IObserver>();
    public void Add(IObserver obj)
    {
        Observers.Add(obj);
    }

    public void Del(IObserver obj)
    {
        Observers.Remove(obj);
    }

    public void Notify(string msg)
    {

        foreach (var observer in Observers)
        {
            observer.Update(msg);
        }
    }

    public void ShowMsg(string msg)
    {
        Notify(msg);
    }
}

// 具体观察者类

internal class ContextObserver : IObserver
{
    public string Name { get; set; } = string.Empty;

    public ContextObserver(string name)
    {
        this.Name = name;
    }

    public void Update(string msg)
    {
        Console.WriteLine($"##> {this.Name} get msg: {msg}");
    }
}

// 具体调用逻辑

ContextSubject subject = new ContextSubject();

ContextObserver observer1 = new ContextObserver("user1");
ContextObserver observer2 = new ContextObserver("user2");

subject.Add(observer1);
subject.Add(observer2);
subject.Notify("test msg 1");

Console.ReadKey();

示例代码: 示例代码

posted @ 2023-10-12 08:59  叫夏洛啊  阅读(3)  评论(0编辑  收藏  举报