行为模式-中介者模式

         中介者模式(Mediator) 使用一个中介对象来封装一系列对象的交互行为,中介者模式可使各个对象之间不需要显示的引用,降低耦合度,并且可以独立改变之间的交互.

         各个对象之间的交互操作非常多;每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用中介者模式,可以使各个对象间的耦合松散,只需关心和中介者的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可扩展性.

    public class Consumer

    {

        public void Consume(string source)

        {

        }

    }   // class Consumer

 

    public class Provider

    {

        private Mediator m_Mediator;

        public string Message { get; private set; }

 

        public Provider(Mediator mediator)

        {

            m_Mediator = mediator;

        }

 

        public void Provide()

        {

            if (m_Mediator != null)

            {

                m_Mediator.Process();

            }

        }

    }   // class Provider

 

    public class Mediator

    {

        private Provider m_Provider;

        private Consumer m_Consumer;

 

        public Mediator(Provider provider, Consumer consumer)

        {

            m_Provider = provider;

            m_Consumer = consumer;

        }

 

        public void Process()

        {

            m_Consumer.Consume(m_Provider.Message);

        }

    }   // class Mediator

可以看到,生产者对中介者加以引用,目的是通知中介者自己执行的操作.这种结构的一个缺陷是生产者与中介者的引用过于紧密,即生产者必须依赖于具有同一个父类的中介者(可以定义一个中介接口处理更为复杂的业务),显然不够灵活..NET应用中,考虑可以采用委托来去掉生产者对中介者的依赖,而效果完全相同.

.NET中的人机界面无论是Win Form还是Web Form,均采用中介者实现界面中的元素相互关联.窗体本身就是中介者,窗体中的元素就是生产者.界面中的元素知道窗体的存在,当发生变化时采用事件机制调用窗体中相应的方法,由窗体操作相关的其它对象.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值