1. 程式人生 > >Unity 邏輯層通知UI 通過接口消除他們通信的switch判斷

Unity 邏輯層通知UI 通過接口消除他們通信的switch判斷

們的 null pre popu unity pri 打印 uid 需求

需求如何: 用戶名字長度為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;
        }
    }

Unity 邏輯層通知UI 通過接口消除他們通信的switch判斷