c# - 对象识别自身并运行特定逻辑的最佳方式是什么?

标签 c# xna-4.0

我有一个类旨在显示游戏中弹出的文本,我将在两种不同的情况下使用它:

  • 显示红色“-1”,
  • 一个黄色的“+25”

对于“-1”,我希望文本出现,然后我希望它淡出屏幕,因此我将颜色值和 alpha 降低为零并稍微移动它的位置,然后删除对象/文本弹出窗口.

对于“+25”,我想将此文本弹出窗口移到金币图标上,然后删除。

我的问题是,由于我将这个类用于两个不同的事件,这两个事件都有不同的执行逻辑,我将如何最好地区分我正在显示的弹出文本以及因此显示的内容。

我想也许有一个使用字符串的 switch/if 语句。

例如

-1 的字符串将是 "enemyLived"

“+25”的字符串将是“goldPickup”

我会检查

if (this.identity == "enemyLived") 做逻辑 否则 (this.identity =="goldPickup") 做逻辑

但我很好奇是否有经验丰富的编码人员对“更好”设计的检查提出建议。

最佳答案

听起来像是 OOD 和使用继承来解决这个问题的经典案例。

创建一个描述一般操作方法的接口(interface),例如PopupTransition(),然后有两个类,一个是负分,一个是正分。让每个人都提供自己关于过渡如何发生的实现(褪色或移动或其他)。当事件发生时,实例化相应的类型,并将其传递给您的通用处理程序,通用处理程序不关心它是什么事件,只会在适当的时候调用 PopupTransition。如果您突然想要支持其他转换,您可以轻松地扩展它。

关于c# - 对象识别自身并运行特定逻辑的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22023427/

相关文章:

c# - 为什么 VertexBuffer 比 DynamicVertexBuffer 更快

audio - XNA SoundEffects无法播放

c# - MVC 和存储库模式数据效率

c# - 从 BackgroundWorker 开始获取响应

c# - nHibernate 多对多映射只删除关联

C# HTTP 请求解析器

c# - 有效操作时出现 NullReferenceException

XNA 游戏组件

XNA SoundEffect 无法从文件加载

C# 覆盖枚举