zoukankan      html  css  js  c++  java
  • 分享一个UI与业务逻辑分层的框架(三)

    序言

    前两篇讲解了UIMediator框架的使用及具体原理代码。本篇讲述MediatorManager的实现代码及展望。

    MediatorManager

    MediatorManager的作用有两点:

    一是解除前端对Mediator子类的依赖,所有前端只需与MediatorManager交互,不需知道Mediator子类;

    二是通过MediatorManager可以实现其他前端控件的扩展。

    以下为MediatorManager实现代码(笔者在写作本文时,将Bind<T>更改为静态函数)

    public class MediatorManager
        {
    
           private static List<Mediator> Mediators = new List<Mediator>();
           public static void Bind<T>(Control control, T BindInstance, string BindProperty) where T : class,IPropertyChange
           {
               Mediator mediator;
               Type type = Type.GetType(MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + control.GetType().Name + "Mediator");
               object obj = Activator.CreateInstance(type);
               if (obj != null)
               {
                   mediator = (Mediator)obj;
                   mediator.Bind(control, BindInstance, BindProperty);
                   Mediators.Add(mediator);
               }
    
           }
        }

    请注意上述代码中

    Type type = Type.GetType(MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + control.GetType().Name + "Mediator");

    此段代码实现了其他前端控件的扩展性。

    后续如果需要扩展其他前端控件时,只需将该控件Mediator子类的命名空间编写成与UIMediator命名空间一致,类名为前端控件类名+Mediator即可。

    示例如下:假设其他前端控件类的类名为CustomControl,UIMediator命名空间为UIMediator。

    namespace UIMediator
    {
        public class CustomControlMediator : Mediator
        {
            ......
        }
    }

    MediatorManager展望

    之所以把MediatorManager单独作为一篇来写,是因为MediatorManager上可做的“手脚”太多了。展望MediatorManager,还有以下扩展可以做:

    1、采用配置化(XML)的形式,可更加灵活地增加其他前端控件Mediator子类。

    2、现有UI与后台属性的绑定是通过在UI程序中硬编码实现的,灵活性差。

    如果采用配置+依赖注入的方式可实现更为灵活的UI与后台业务逻辑分离。

    附上DEMO,欢迎大家拍砖讨论。

    UIMediatorDemo

  • 相关阅读:
    linux 免交互状态下修改用户密码
    Sqlmap基础(一)
    cmd命令行指定系统延迟关机时间
    Shell 是个什么玩意
    Linux Shell脚本入门:tee命令
    shell脚本 -d 是目录文件,那么-e,-f等说明
    修改linux终端命令行颜色
    Linux 动画显示
    OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务
    Curl命令使用
  • 原文地址:https://www.cnblogs.com/huangmianwu/p/5895239.html
Copyright © 2011-2022 走看看