• 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;
            }
        }
  • 相关阅读:
    Java中线程池,你真的会用吗?ExecutorService ThreadPoolExcutor
    springcloud中微服务的优雅停机(已验证)
    SpringCloud eureka
    Spring Boot实战:静态资源处理
    你真的理解CountDownLatch与CyclicBarrier使用场景吗?
    Effective.Java第56-66条(规范相关)
    Effective.Java第45-55条(规范相关)
    Effective.Java第34-44条(枚举)
    装饰(Decorator)模式
    合成(Composite)模式
  • 原文地址:https://www.cnblogs.com/plateFace/p/8572848.html
Copyright © 2020-2023  润新知