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;
            }
        }
  • 相关阅读:
    [IDA] 显示反汇编字节码
    使用OD手动去除花指令的一个小技巧
    [CrackMe]一个简单算法的CrackMe
    [IDA] 将ANSI字符串转换为Unicode字符串
    二进制中的数学换算
    GDT表与段描述符
    C#3.0新增功能10 表达式树 04 执行表达式
    C#3.0新增功能10 表达式树 03 支持表达式树的框架类型
    C#3.0新增功能10 表达式树 02 说明
    C#3.0新增功能10 表达式树 01 简介
  • 原文地址:https://www.cnblogs.com/plateFace/p/8572848.html
Copyright © 2011-2022 走看看