zoukankan      html  css  js  c++  java
  • Unity 逻辑层通知UI 通过接口消除他们通信的switch判断

    需求如何:  用户名字长度为2-12之间,  如果错误在界面上弹出一个消息框

    写烂一点

    public void PostRename(string name)
        {
            if (string.IsNullOrEmpty(name))
                return;
    
            if (name.Length > 2 && name.Length <= 16)
            {
                UI类.打开Box框("你用户输入错误")
                return;
            }
        }

    写正常一点

    public void PostRename(string name, string guid)
        {
            if (string.IsNullOrEmpty(name))
                return;
    
            if (name.Length > 2 && name.Length <= 16)
            {
                EventManager.Noifty("消息","你用户输入错误")
                return;
            }
        }
    
    //界面这边的方法
        public void OnRenameResult(string msg)
        {
            if (string.IsNullOrEmpty(msg))
                return;
            else
                Show(msg);     //显示错误提示
            
        }

    以上这种方式会因为底层的结果增多,导致上层增加 if 或 switch对结果判断  多余的监听函数,  我们只想打印消息, 为了不破坏层的概念, 我们要写很多代码. 

    可以添加一个接口消除这些问题,我们只关心的输出信息, 至于上层如何输出 这个是他们的事情.

    写好一点

    输出接口:

    public interface IDebugPop
    {
        void Box(string msg);
    }
    
    public sealed class IPopUpBoxMa
    {
        private static IDebugPop mI;
        public static IDebugPop I
        {
            get
            {
                if (mI == null)
                    mI = new PopUpBox();
    
                return mI;
            }
        }
    
        private static void SetIPopUpBox(IDebugPop i)
        {
            mI = i;
        }
    
    }
    
    public class PopUpBox : IDebugPop
    {
        public void Box(string msg)
        {
              Debug.Log(msg); // 输出UnityLog
              ShowMsg(msg);   //显示一个Box框来输出
        }
    }

    逻辑层: 

    public void PostRename(string name)
        {
            if (string.IsNullOrEmpty(name))
                return;
    
            if (name.Length > 2 && name.Length <= 16)
            {
                IPopUpBoxMa.I.Box(“你用户输入错误”)
                return;
            }
        }
  • 相关阅读:
    打开任务管理器的hang住的进程直接右键抓取dmp文件
    Excel匯入匯出整理
    ShellExecute 命令行参数最长2068
    一个判断是否为质数的正则表达式
    visualstudio 比较和merge工具命令行配置
    C++ 螺旋队列
    寻找连通线,参考八后算法递归,可用于验证码去除连续干扰线
    DES 加解密
    记个地址
    CF1383C String Transformation 2 题解
  • 原文地址:https://www.cnblogs.com/plateFace/p/8572848.html
Copyright © 2011-2022 走看看