为了账号安全,请及时绑定邮箱和手机立即绑定

设计模式--中介(Mediator)模式

标签:
JavaScript

今天Insus.NET一个方法,使用设计模式的中介者模式来解,它既不需要for循环,也不使用到FindControl()方法来查找。

先来看看中介者模式的定义: 英文:Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently. 中文:定义一个对象,该对象封装了一组对象如何交互。 中介促进松散耦合通过保持指的对象从对方明确,独立和它可以让你改变他们的交互。

 
我们创建一个抽象中介者类:


实际的中介者类,实现了抽象中介者Mediator,并override两个方法AppendControl()和Show():


上面的Show()方法,它带有一个参数,传入的是月份,它就会显示相的Panel控件。

 

看到这里,怎样,面向对象Object Oriented,OO,接口(抽象),封装......
如果使用前端js或是jQuery来去控制显示与否,它与面象对象的远离了。任何有它好的一面,也有不足的一面。

来个假设,如果网友的问题的Panel控件ID并没有规则,而是一些杂乱的字符,使用for来findControl确实不好解决。因此使用中介者模式就能轻易解决它。下面Insus.NET修改一下:

<asp:Panel ID="Panelsf" runat="server" Visible="false">一</asp:Panel>            <asp:Panel ID="Panelwrt" runat="server" Visible="false">二</asp:Panel>            <asp:Panel ID="Panel58sg" runat="server" Visible="false">三</asp:Panel>            <asp:Panel ID="Panelwre4" runat="server" Visible="false">四</asp:Panel>            <asp:Panel ID="Paneljif" runat="server" Visible="false">五</asp:Panel>            <asp:Panel ID="Panel24fg" runat="server" Visible="false">六</asp:Panel>            <asp:Panel ID="Panelf4g" runat="server" Visible="false">七</asp:Panel>            <asp:Panel ID="Panelhwer" runat="server" Visible="false">八</asp:Panel>            <asp:Panel ID="Panelloi" runat="server" Visible="false">九</asp:Panel>            <asp:Panel ID="Panel18iu" runat="server" Visible="false">十</asp:Panel>            <asp:Panel ID="Panel1jrs" runat="server" Visible="false">十一</asp:Panel>            <asp:Panel ID="Panel14tt" runat="server" Visible="false">十二</asp:Panel>

View Code

 

下面是cs的修改:


运行结果,今天已经是12月1号了:



Ok,今天学习设计模式的中介者模式,并在应用中展示。机会可以学习更多......

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消