设计模式之中介者设计模式n
2017-02-12 13:55
176 查看
中介者设计模式的说明,不进行详细介绍,重点放在代码段
中介设计模式
定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。
使用场合:
1.一组定义良好的对象,现在要进行复杂的通信。
2.定制一个分布在多个类中的行为,而又不想生成太多的子类。
优点:
1.降低了系统对象之间的耦合性,使得对象易于独立的被复用。
2.提高系统的灵活性,使得系统易于扩展和维护。
缺点:
中介者模式的缺点是显而易见的,因为这个“中介“承担了较多的责任,所以一旦这个中介对象出现了问题,那么整个系统就会受到重大的影响
多播委托也可以实现、且更简单、但不安全,委托本事是不安全的。
事件是类型安全的委托、所以使用事件最为合理,这就是观察者设计模式。
案例说明:
环境:
信息创建者:当信息创建者信息发生变化时,所有的接受者需要同步的获取到信息。
信息接受者:接受信息创建者的信息。
接口:由接受者实现接口,用于信息创建者进行调用,ISenderMessage。
Main窗体:创建信息创建者和信息接受者,MainForm
中介设计模式
定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。
使用场合:
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 SenderForm() { InitializeComponent(); //初始化 MessageCollection = new List<ISenderMessage>(); }
//SenderForm public SenderForm() { InitializeComponent(); //初始化 MessageCollection = new List<ISenderMessage>(); } //静态属性,方便全局使用 public static List<ISenderMessage> MessageCollection { get; set; } //TextBox事件 private void tbSendMessage_TextChanged(object sender, EventArgs e) { MessageSend(tbSendMessage.Text.Trim()); } //调用接受者实现接口 public void MessageSend(string str) { for (int i = 0; i < MessageCollection.Count; i++) { MessageCollection[i].GetMessage(str); } }
public partial class GetMessageForm :ISenderMessage
{
public GetMessageForm()
{
InitializeComponent();
SenderForm.MessageCollection.Add(this);
} public override void GetMessage(string messageStr) { this.textBox1.Text = messageStr; } }
相关文章推荐
- 设计模式笔记(二十一) —— 中介者模式
- 设计模式学习笔记--Mediator 中介者模式
- 设计模式--中介者模式(Mediator)
- 设计模式--中介者模式(Mediator)
- 搞定设计模式3之中介者模式
- 设计模式——中介者模式
- 设计模式笔记--行为型模式之五--中介者
- 设计模式笔记 16. Mediator 中介者模式(行为型模式)
- 设计模式--中介者模式(Mediator)
- 设计模式学习(十三)迭代器模式-中介者模式
- 设计模式之Mediator(中介者)
- 设计模式之Mediator(中介者)
- 设计模式通俗演义(一)----中介者模式
- 设计模式之Mediator(中介者)
- 设计模式袖珍版 连续转载之 - Mediator(中介者)
- 设计模式之Mediator(中介者)
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
- 设计模式之五——中介者模式
- [导入]C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式.zip(8.75 MB)
- 设计模式(21)-中介者模式(Mediator)