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;
        }
    }
posted @ 2018-03-15 12:12  盘子脸  阅读(...)  评论(... 编辑 收藏