中介者設計模式的說明,不進行詳細介紹,重點放在代碼段
中介設計模式
定義一箇中介對象來封裝系列對象之間的交互。中介者使各個對象不需要顯示地相互引用,從而使其耦合性鬆散,而且可以獨立地改變他們之間的交互。
使用場合:
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;
}
}