設計模式之中介者設計模式n

中介者設計模式的說明,不進行詳細介紹,重點放在代碼段

中介設計模式

定義一箇中介對象來封裝系列對象之間的交互。中介者使各個對象不需要顯示地相互引用,從而使其耦合性鬆散,而且可以獨立地改變他們之間的交互。

 

使用場合:
1.一組定義良好的對象,現在要進行復雜的通信。
2.定製一個分佈在多個類中的行爲,而又不想生成太多的子類。

優點:
1.降低了系統對象之間的耦合性,使得對象易於獨立的被複用。
2.提高系統的靈活性,使得系統易於擴展和維護。

缺點:
中介者模式的缺點是顯而易見的,因爲這個“中介“承擔了較多的責任,所以一旦這個中介對象出現了問題,那麼整個系統就會受到重大的影響

多播委託也可以實現、且更簡單、但不安全,委託本事是不安全的。

事件是類型安全的委託、所以使用事件最爲合理,這就是觀察者設計模式。

案例說明:

環境:

信息創建者:當信息創建者信息發生變化時,所有的接受者需要同步的獲取到信息。

信息接受者:接受信息創建者的信息。

接口:由接受者實現接口,用於信息創建者進行調用,ISenderMessage。

Main窗體:創建信息創建者和信息接受者,MainForm

        //MainForm
        //創建信息創建者窗體
        private void btnReceiver_Click(object sender, EventArgs e)
        {
            GetMessageForm1 g1 = new GetMessageForm1();
            g1.Show();
            GetMessageForm2 g2 = new GetMessageForm2();
            g2.Show();
        }
        //創建信息接受者窗體
        private void btnSender_Click(object sender, EventArgs e)
        {
            SenderForm senderForm = new SenderForm();
            senderForm.Show();
        }
        //接口,信息接受者進行實現    	public interface ISenderMessage
    	{
        void GetMessage(string messageStr);
    	}
    public class SendForm
    {
        static SendForm()
        {
             //初始化
            MessageCollection = new List<ISenderMessage>();
        }

        public static List<ISenderMessage> MessageCollection {get;set;}


        public SenderForm()
        {
            InitializeComponent();           
        }
    }
     public partial class GetMessageForm :ISenderMessage 
     { 
           public GetMessageForm() 
           { 
                InitializeComponent(); 
                SenderForm.MessageCollection.Add(this); 
           }

            public override void GetMessage(string messageStr)
            {
                this.textBox1.Text = messageStr;
            }
   	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章