Newbe.Claptrap 框架中为什么用 Claptrap 和 Minion 两个词?最近整理了一下项目的术语表。今天就谈谈为什么起了 Claptrap 和 Minion 两个名字。
Claptrap简单来说 Claptrap = Actor + 事件溯源
Claptrap 是本框架定义的一种特殊 Actor。除了上文中提到 Actor 两种特性之外,Claptrap 还被定义为具有以下特性:
状态由事件进行控制。Actor 的状态在 Actor 内部进行维护。Claptrap 同样也是如此,不过改变 Claptrap 的状态除了在 Actor 之外,还限定其只能通过事件进行改变。这就将事件溯源模式与 Actor 模式进行了结合。通过事件溯源模式保证了 Actor 状态的正确性和可追溯性。这些改变 Claptrap 状态的事件是由 Claptrap 自身产生的。事件产生的原因可以是外部的调用也可以是 Claptrap 内部的类触发器机制产生的。
Claptrap 是 newbe36524 曾经玩过的一款老游戏中的经典角色。点击此处了解
MinonMinion 是本框架定义的一种特殊 Claptrap 。是在 Claptrap 基础上做出的调整。其具备以下特性:
从对应的 Claptrap 读取事件。与 Claptrap 相同,Minion 的状态也由事件进行控制。不同的是,Minion 就像其字面意思一样,总是从对应的 Claptrap 处获取事件,从而改变自身的状态。因此,其可以异步的处理 Claptrap 产生事件之后的后续操作。
Minion 一词出自 newbe36524 玩的一款运气游戏《炉石传说》,其中 “随从” 在英文版中的描述即为 “minion”。
Claptrap 故事化描述以下是关于 Claptrap 的故事化描述,用于辅助理解。不必太过在意。
Claptrap 是一种结构简单、功能简单的机器人。虽然它能够完成各种各样的任务,但是它却有一些限制。
Claptrap 是一种单线程的机器人,它每次只能进行一个任务。如果你想要交给它多个任务的话,它会按照事情安排的先后顺序逐个处理。
Claptrap 工作的时候大概的过程是这样的。当他接受到一个任务时,他会先考虑这个事情是否是他能够百分之百完成的。如果这件事情他能够百分之百完成,那么那就将这件事情写入到他的备忘录当中,然后完成这件事情。然后接下来处理下一个事情。
每天早上一起来,Claptrap 做的第一件事情就是找回迷失的自我。找回昨天那个棒棒的自己。首先它会尝试看看有没有昨天的靓照,如果有的话,它将复刻昨天的样貌。接下来,从手中的备忘录当中阅读昨天拍照之后发生的种种事情,逐渐的恢复自己的记忆。这样就成功的找回的自己。
Claptrap 是一种标准化的机器人。它们都产出于 Claptrap 工厂的生产线。工厂会按照 Claptrap 设计图使用标准化的组件来组装一个 Claptrap 机器人。这些必要的组件主要包括了:内存、手持型备忘录、多功能任务处理器和内存打印机。
内存。Claptrap 配备有一个定制化大小的内存,用于保存当前整机的状态数据。由于内存数据的断电易失性,所以假如 Claptrap 断电了,那么内存中的数据也就丢失了。
多功能任务处理器。基于成本的考虑,每个 Claptrap 配备的多功能任务处理器都是为了特种的任务定制过的。例如:专门用于消防的 Claptrap ,在它们的多功能任务处理器中基本上包含的都是和消防有关的功能。但是它就无法处理家政相关的任务。
手持型备忘录。Claptrap 在做每件任务之前都会用手持型备忘录记录任务相关的一切细节,来确保任务的每个细节都准确无误。
内存打印机。可以将内存当中的数据打印成一份可以持久化保存的物理格式,在实际生产中用的比较多的是 DNA 记忆体。由于内存数据的断电易失性,所以重启之后内存当中的数据只能通过备忘录记录来逐个找回。但由于备忘录数据有可能很大,这样恢复起来会比较的缓慢。有了内存打印机的帮助,便可以将某一时刻的内存状态完全打印出来,这样在重启恢复时将加快内存数据恢复的速度。
Minon 故事化描述以下是关于 Minion 的故事化描述,用于辅助理解。不必太过在意。
对于较为复杂的任务来说单个 Claptrap 完成起来会比较困难。因此,在设计此类 Claptrap 的时候会按照需求给这个 Claptrap 追加几个小弟来协助它完成手头的任务。这些小弟被称为 Minion 。Minion 的本质也是一台 Claptrap 机器人,但是它们相对于完整版的 Claptrap 来说,减少了手持型备忘录这个设备。这是源于其工作方式和 Claptrap 略有不同的原因。
Minion 只能通过协同 Claptrap 来完成任务,它们不能决定是否要做某个任务。所以记录任务详细信息的手持型备忘录只要有 Claptrap 持有就可以了。