中介者模式的一点应用

应用软件开发的时候,往往需要把界面显示逻辑和业务逻辑完全分离,以适应界面显示组件、界面显示方式的更换。之前学习了中介者模式http://blog.csdn.net/u014524641/article/details/79235239,结合MVC思想,根据我对中介者模式的理解,写了这篇关于PC端软件的业务逻辑层和界面显示层如何通过界面控制层分离的文章。

中介者模式意图在于用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。它适用于如下一些情况:

一组对象以定义良好但是复杂的方式时行通信。产生的相互依赖关系结构混乱且难以理解;

一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象;

想定制一个分布在多个类中的行为,而又不想生成太多的子类。

针对实际对中介者模式结构的一些修改:


在界面控制类(ConcreteControl)中保存一份界面显示类(ConcreteUserPanel)的实例(m_userPanel),界面显示类中也保存一份界面控制类的实例(m_ConcreteControl).二者之间的通信通过对控制对方的实例进行通信。

而业务逻辑层代码只与界面控制类通信,完全与界面显示类分离。如今界面显示组件繁多、界面风格、开发方式各有特点,如果在软件开发完成后需要更更换界面显示组件,那仅需要更改界面显示层的代码就可以了。

如下是制作登录界面的一个例子:


ILoginControl登录界面控制类接口
为登录界面与系统逻辑层的中介,登录界面通过它与系统交互。登录控制类需要保存一个登录界面的实例m_loginDialog,其它方法如图下:


ILoginDialog登录界面接口
为登录界面显示类的接口,是面向用户的,用户通过它与逻辑层交互。该类需要保存一个控制类的实例m_control。还需要一个SetControl()方法,其它方法如下:


接口实现
需要在界面控制类的构造函数中实例化界面类和给界面实例设置Control实例:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值