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;
}
}
Unity 逻辑层通知UI 通过接口消除他们通信的switch判断的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2) ...
- C# .NET 逻辑层的框架设计
前述:在我的了解中,一个大项目的逻辑层是不可捉摸的,对于不同项目或场景都是不同的逻辑.先说明,我的想法是对逻辑层类结构,以及如何操作逻辑的方法进行抽象的封装.并且考虑将不同类,或者不同程序集中的逻辑方 ...
- Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层【转】
转自:http://blog.csdn.net/droidphone/article/details/7497787 在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本 ...
- 从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)
原本关于T4模板原想分5个章节详细解说的,不过因为最近比较忙,也不想将整个系列时间拉得太长,所以就将它们整合在一块了,可能会有很多细节没有讲到,希望大家自己对着代码与模板去研究. 本章代码量会比较大, ...
- C#多态“说来也说”——逻辑层BLL中的多态使用
本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/5861842.html 昨天晚上,有个朋友说学了好久,依然没搞 ...
- 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法
首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...
- Python开发入门与实战12-业务逻辑层
12. Biz业务层 前面的章节我们把大量的业务函数都放在了views.py里,按照目前这一的写法,当我们编写的系统复杂较高时,我们的views.py将会越来越复杂,大量的业务函数包含其中使其成为一个 ...
- 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)
转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...
- 表现层(jsp)、持久层(dao)、业务层(逻辑层、service)
转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...
随机推荐
- Envious Exponents
问题 E: Envious Exponents 时间限制: 1 Sec 内存限制: 128 MB提交: 321 解决: 53[提交] [状态] [讨论版] [命题人:] 题目描述 Alice an ...
- A/B Problem(大数)
描述 做了A+B Problem,A/B Problem不是什么问题了吧! 输入 每组测试样例一行,首先一个号码A,中间一个或多个空格,然后一个符号( / 或者 % ),然后又是空格,后面又是一个号码 ...
- BZOJ 4443 [Scoi2015]小凸玩矩阵(二分答案+二分图匹配)
[题目链接]http://www.lydsy.com/JudgeOnline/problem.php?id=4443 [题目大意] 从矩阵中选出N个数,其中任意两个数字不能在同一行或同一列 求选出来的 ...
- 【分类讨论】【计算几何】【凸包】hihocoder 1582 ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 E. Territorial Dispute
题意:平面上n个点,问你是否存在一种黑白染色方案,使得对于该方案,无法使用一条直线使得黑色点划分在直线一侧,白色点划分在另一侧.如果存在,输出一种方案. 如果n<=2,显然不存在. 如果所有点共 ...
- 【高斯消元解xor方程组】BZOJ2466-[中山市选2009]树
[题目大意] 给出一棵树,初始状态均为0,每反转一个节点的状态,相邻的节点(父亲或儿子)也会反转,问要使状态均为1,至少操作几次? [思路] 一场大暴雨即将来临,白昼恍如黑夜!happy! 和POJ1 ...
- 用C#写个邮件监控服务(一)
监控服务,首先当然是个服务了.至于什么是windows服务,这里就不多说了.正题 1. 创建服务项目 打开VS编程环境,在C#中创建windows服务项目 2.创建后属性中更改名称和服务名. 3.增加 ...
- gridview展开嵌套显示
最近实在是太忙了,好几个月没有更新博客了,近来项目需要用到GRIDVIEW嵌套的,在这里跟大家分享一下,大家如有更好的解决方案,请不吝贴出.在ASP.NET中,GridView嵌套可以显示当前选定的父 ...
- 【centOS】【xshell】xshell连接虚拟机上的centOS,操作途中突然断开连接,报错:connect closed by foreign host
如题 xshell连接虚拟机上的centOS,操作途中突然断开连接,报错:connect closed by foreign host 快捷解决方法: 在虚拟机上centOS重新启动网络,即可解决问 ...
- 【系统自启动】使用windows自带工具管理开机启动项
1.windows+R,键入:msconfig 2.进入启动选项卡 3.将不用自启动的选项 取消勾选即可 点击应用,重启电脑即可
- express和json的调用
在express工程里,建立app.js var express = require('express'); var app = express(); //数据接口 var newsdata=[{ ' ...