当前位置: 移动技术网 > IT编程>开发语言>c# > C#观察者模式(Observer Pattern)实例教程

C#观察者模式(Observer Pattern)实例教程

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文以实例形式简单讲述了c#观察者模式,分享给大家供大家参考。具体实现方法如下:

现在假设有一个软件公司,每当有新产品推出,就把信息通知到一些客户。

把通知这个动作抽象成一个接口。代码如下所示:

public interface iservice
{
    void notif();
}

客户如果想获得通知,就需要实现以上的接口。这里的客户被看作是观察者。

public class customera : iservice
{
    public void notif()
    {
      console.writeline("客户a收到通知了~~");
    }
}
public class customerb : iservice
{
    public void notif()
    {
      console.writeline("客户b收到通知了~~");
    }
}

作为软件公司来讲,维护着一个客户的集合,并提供注册、取消注册的方法,往这个集合添加或删除客户。每当有通知的时候,就遍历客户集合,让iservice执行通知。软件公司可以看作是一个被观察对象,或者说是发起动作的源头。

public class mycompany
{
    private ilist<iservice> subscribers = new list<iservice>();
    public void subscribe(iservice subscriber)
    {
      subscribers.add(subscriber);
    }
    public void cancelsubscribe(iservice subscriber)
    {
      subscribers.remove(subscriber);
    }
    public void sendmsg()
    {
      foreach (iservice service in subscribers)
      {
        service.notif();
      }
    }
}

客户端创建软件公司实例、创建观察者实例、注册或取消观察者等。

class program
{
    static void main(string[] args)
    {
      mycompany company = new mycompany();
      iservice customera = new customera();
      iservice customerb = new customerb();
      company.subscribe(customera);
      company.subscribe(customerb);
      company.sendmsg();
      console.readkey();
    }
}

总结:

把一个通知的动作抽象成接口
观察者如果想接收到通知,就实现通知接口
被观察对象做3件事情:维护观察者的集合,注册/取消观察者,发起动作遍历观察者集合让通知接口来做事

希望本文所述对大家c#程序设计的学习有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网