zoukankan      html  css  js  c++  java
  • 观察者-中介者设计模式(非委托实现方式)

    通过接口实现,实现松耦合。

    1. 通过中介者(主窗体),子窗体1中没有任何任何其它子窗体的信息,实现观察者与被观察者之间的彻底解耦。

    主窗体

    public partial class mainform : Form
        {
            public mainform()
            {
                InitializeComponent();
            }
    
            private void butMessage_Click(object sender, EventArgs e)
            {
                childform1 c1 = new childform1();
                c1.Show();
                childform2 c2 = new childform2();
                c1.messageonList.Add(c2);
                c2.Show();
                childform3 c3 = new childform3();
                c1.messageonList.Add(c3);
                c3.Show();
            }
        }

    子窗体1

     public partial class childform1 : Form
        {
            public childform1()
            {
                InitializeComponent();
                messageonList = new List<ImessageOn>();
            }
    
            //这个集合放我们的观察者
            public List<ImessageOn> messageonList { get; set; }
    
            private void butMessage_Click(object sender, EventArgs e)
            {
                foreach(var messageon in messageonList)
                {
                    messageon.ReceiveMessage("小明");
                }
            }
        }

    子窗体2、3

    public partial class childform2 : Form,ImessageOn
        {
            public childform2()
            {
                InitializeComponent();
            }
    
            public void ReceiveMessage(string str)
            {
                this.textMessage.Text = str + " " + DateTime.Now.ToString();
            }
        }

  • 相关阅读:
    51Nod1119
    stoi
    坑爹大质数
    USACO07OPEN Cheapest Palindrome
    USACO08NOV Mixed Up Cows
    USACO12FEB Nearby Cows
    SCOI2009 粉刷匠
    USACO16OPEN 248
    POI2014 PTA-Little Bird
    USACO17FEB Why Did the Cow Cross the Road I G
  • 原文地址:https://www.cnblogs.com/janghe/p/7711395.html
Copyright © 2011-2022 走看看