需求如何:  用户名字长度为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判断的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2) ...

  2. C# .NET 逻辑层的框架设计

    前述:在我的了解中,一个大项目的逻辑层是不可捉摸的,对于不同项目或场景都是不同的逻辑.先说明,我的想法是对逻辑层类结构,以及如何操作逻辑的方法进行抽象的封装.并且考虑将不同类,或者不同程序集中的逻辑方 ...

  3. Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层【转】

    转自:http://blog.csdn.net/droidphone/article/details/7497787 在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本 ...

  4. 从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)

    原本关于T4模板原想分5个章节详细解说的,不过因为最近比较忙,也不想将整个系列时间拉得太长,所以就将它们整合在一块了,可能会有很多细节没有讲到,希望大家自己对着代码与模板去研究. 本章代码量会比较大, ...

  5. C#多态“说来也说”——逻辑层BLL中的多态使用

    本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/5861842.html 昨天晚上,有个朋友说学了好久,依然没搞 ...

  6. 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法

    首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...

  7. Python开发入门与实战12-业务逻辑层

    12. Biz业务层 前面的章节我们把大量的业务函数都放在了views.py里,按照目前这一的写法,当我们编写的系统复杂较高时,我们的views.py将会越来越复杂,大量的业务函数包含其中使其成为一个 ...

  8. 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)

    转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...

  9. 表现层(jsp)、持久层(dao)、业务层(逻辑层、service)

    转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...

随机推荐

  1. 【BZOJ 1697】1697: [Usaco2007 Feb]Cow Sorting牛排序

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大 ...

  2. 【后缀自动机】【拓扑排序】【动态规划】hihocoder1457 后缀自动机四·重复旋律7

    解题方法提示 小Hi:我们已经学习了后缀自动机,今天我们再来看这道有意思的题. 小Ho:好!这道题目让我们求的是若干的数字串所有不同子串的和. 小Hi:你能不能结合后缀自动机的性质来思考如何解决本题? ...

  3. bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害

    1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 Description Farmer John的农场里有P个牧场,有C条无向道路连接着他们,第i条道路连接着 ...

  4. [百度之星2014资格赛] Disk Schedule 报告

    Disk Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. CDOJ 1284 苦恼的郭大侠 map启发式合并

    苦恼的郭大侠 题目连接: http://acm.uestc.edu.cn/#/problem/show/1284 Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行 ...

  6. HDU 3473 Minimum Sum(划分树)

    Minimum Sum Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  7. 你可能从未听过的 Linux 发行版

    Hanthana Linux 官方主页:http://www.hanthana.org Hanthana Linux 基于 Fedora,主要面向 IT 教育,默认包含额外的编/解码器及多媒体播放器. ...

  8. 统计中的t检验

    1.什么情况下,应用t检验 1. 已知总体的均值m,或者我们假设了一个总体均值m: 2. 我们知道样本的个数n,样本的的方差var,样本的均值m: 3. 我们假设总体,或者样本都是服从正太分布的. 2 ...

  9. tomcat+mysql在Kubernetes环境

    基于PV作为交换目录将应用最终拷贝入/tomcat/webapps目录 进入Docker后,修改/bin/catalina.sh,加入jdbc的类 \webapps\mytestsql\WEB-INF ...

  10. javascript配置ckfinder的路径

    <script type="text/javascript" src="ckfinder/ckfinder.js"></script> ...