设计模式之中介者设计模式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;
            }
   	}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值