设计可插入积分和徽章系统[关闭]

2023-12-03

如何设计一个可插拔积分和徽章系统,既易于打开和关闭,又易于变成自己的模块?

经过多次试验和错误,我得出的结论是,积分和徽章与应用程序的唯一业务逻辑过于交织在一起,无法以简单的方式将它们具体化(许多规则涉及对应用程序核心结构的理解,这使得事情变得更加复杂)。已经相当耦合了)

我目前以简单的方式做所有事情 - 我将所有业务逻辑(验证、持久性、游戏化、通知)外部化在服务类的方法中。然而,这些方法已经变得相当混乱,而且我担心相当耦合。没有简单的方法可以简单地关闭任何底层系统


作为一个想法,如何将您关心的业务逻辑事件与您如何将它们解释为用户的积分、徽章、级别分开?这样您就可以在一个地方实现一些疯狂的东西,例如在足球赛季期间连续三个星期一购买咖啡的 Ball Buzz 徽章。

从概念上讲,考虑将所有潜在有趣的交易和交互的消息传递到此奖项模块,该模块封装(并向会计师隐藏)这个有趣的功能。


经进一步审查 SO,已实质性讨论已经是主题了。 特别值得注意的是“存储徽章标准的最佳方式”涵盖事件通知和““徽章”系统的数据库架构”整体架构讨论。

人们已经就以下方面的相对优点进行了讨论:关系型的 vs. nosql / Mongodb此类功能的数据库,以及将业务逻辑划分为存储过程.

在我看来,有很多重新发明轮子的事情正在进行。有人知道该领域出现的 OSS 框架或 Github 项目吗?另外,有关于徽章特别是游戏化主题的有价值的论文或文章吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计可插入积分和徽章系统[关闭] 的相关文章

随机推荐

  • 部分视图和渲染部分视图有什么区别?

    我对 ASP NET MVC 很陌生 请让我知道哪里应该使用部分视图以及哪里应该渲染部分视图 提前致谢 此链接可能有帮助 Html RenderPartial 此方法结果将直接写入 HTTP 响应流 这意味着它使用与当前网页 模板中使用的相
  • QWebEnginePage.print 与 QPrintPreviewDialog 导致空预览

    我有一个曾经使用过的程序QWebKit在对话框中显示和打印自定义生成的 HTML 报告 现在 我想将整个内容转换为QWebEngine 到目前为止一切正常 只有打印不行 到目前为止我用过QWebView print 将整个 HTML 数据交
  • JSF 2.0:设置验证时,复合组件内的 h:inputText 因非 String 对象而失败

    在支持 bean 中 Min 3 Integer foo 如果我有这样的形式
  • Tomcat 服务器无法“外部”工作

    我已经设置了 Tomcat 服务器并且它可以在本地主机上运行 但是我无法在外部运行它 我需要更改一些设置吗 我尝试了一切 但它似乎在其他地方不起作用 这很奇怪 因为它在本地主机上工作得很好 因此 您正在 spring boot 应用程序中运
  • 基于文件名的文件夹名称

    这实际上不是一个编码问题 我需要将所有文件放入单独的目录中 以便每个文件都有自己的目录 其名称基于文件名 因此 在我制作应用程序来执行此操作之前 有人知道可以执行此操作的软件吗 比如Automator什么的 无需构建应用程序 从 Windo
  • 现代 CPU 保持标志更新是否需要花费大量资源?

    据我了解 在现代无序 CPU 上 最昂贵的东西之一是状态 因为必须在多个版本中跟踪该状态 在许多指令中保持最新状态等 一些指令集 例如 x86 和 ARM 大量使用标志 这些标志是在成本模型不是现在的样子时引入的 并且标志只花费几个逻辑门
  • 如何检查用户是否在 Google Play 上对您的应用进行了评分?

    我想检查用户是否在 Google Play 上对我的应用程序进行了评分 而不是有多少颗星 只要他们是否有 如果他们没有 我将通过一个对话框提示他们 要求他们使用以下代码对其进行评分 startActivity new Intent Inte
  • MSBuild ITaskItem RecursiveDir 元数据消失

    我有一个自定义 MSBuild 任务 它处理一组文件并返回该文件的修改子集 基本上 我只是根据输入创建一个新的 ITaskItem 数组 跳过一些项目 但是 当此结果集返回到 MSBuild 时 RecursiveDir 元数据消失 在我的
  • 数据库连接字符串和排序规则

    是否可以在 MySql 连接字符串中设置连接排序规则以及如何设置 因为服务器上有用于新连接的默认设置 两件事我can t do 无法通话SET COLLATION CONNECTION打开连接后 因为我正在使用实体框架来为我执行所有调用正如
  • Java Swing 以饼图形式显示进度

    我想以饼图格式显示进度 有人可以帮忙吗 我有数据要显示 但如何以这种格式显示它 当我们下载文件时 Google Chrome 中会显示进度 根据 trashgod 提供的链接 这里是实现 馅饼 效果的一种方法 这仅处理不确定的进度条 但添加
  • 将 swifty json 数组保存到用户默认值

    我有一个 jsondata它提供以下信息 let data QuestionTitle Entomology is the science that studies Id 205 Options Option Insects Id 810
  • 从 PySpark 中的列加载 XML 字符串

    我有一个 JSON 文件 其中一列是 XML 字符串 我尝试在第一步中提取该字段并写入文件 并在下一步中读取该文件 但每一行都有一个 XML 标头标记 因此生成的文件不是有效的 XML 文件 如何使用 PySpark XML 解析器 com
  • 使用 jQuery 获取每个
  • 索引号
  • 我正在尝试获取少数的索引号 li 的 li 是 8 我正在尝试获取每个 li 的编号 在每个 li 上单击我都会执行此功能 var str amastorage li index alert str 这总是给我8 EDIT 这就是我得到它的
  • onResume 在视图模型中不起作用

    我的数据仅在创建时才获取 我使用视图模型 当按后退按钮时 它不会更新以前的数据 onresume 在此不起作用 我提到了这个 但没有一个有帮助 gt 对 ViewModel 中的活动生命周期做出反应 我需要帮助 提前致谢 活动 class
  • DataGrid 获取选定行的列值

    我正在尝试获取 DataGrid 中选定行的每一列的值 这就是我所拥有的 private void dataGrid1 CellEditEnding object sender DataGridCellEditEndingEventArgs
  • $("html").animate({scrollTop: $(document).height() }, "慢");如果它在底部,请不要滚动它

    我有三个隐藏 div 的按钮 当我单击一个按钮时 我希望内容滚动到底部 然后当我单击另一个按钮时 我希望页面保持在原来的位置 但加载新内容 我尝试过变量和 if 语句 var i 0 link slide13 click function
  • 创建一个核心日期实体实例但不希望它被存储(非持久)

    有时我需要实例化核心数据实体来存储一些信息以供临时使用 但我不需要将它存储到数据库中 目前我创建了一个类似的类 其结构与 CoreDateEntity 相同 它运行良好 但我必须在两个模型之间进行许多数据传输 有没有更好的方法来处理这个问题
  • C# - 将 JSON 反序列化为 ValueTuple

    我正在尝试反序列化 foo 1 bar false foo 2 bar false into List lt string bool gt 类型 JsonConvert DeserializeObject
  • 修改Android选中下拉项的颜色

    如何修改 Android Honeycomb 应用程序中 Spinner 上所选项目的文本颜色 编辑 我有一个正在膨胀的旋转布局 是否可以在此微调器中添加属性来更改文本颜色 我能够更改背景 例如使用微调器上的 android backgro
  • 设计可插入积分和徽章系统[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 如何设计一个可插拔积分和徽章系统 既易于打开和关闭 又易于变成自己的模块 经过多次试验和错误 我得出的结论是 积分和徽章与应用程序的唯一业务逻辑过于交织在一起 无法以简单的方式将它们具