标签:
呼叫事件图形结构如下
蓝色代表 警察局 红色代表警察 黄色代表 死亡人 蓝色球代表呼救人 黑色代表 敌人
警察目标是 攻击 黑色人,但 路中 会碰到 黄色人,如果警察有 救人功能 则会先救人去医院再看 是否 还有敌人攻击。如果没救人技能 则 按照默认打 黑色人
我设计的 思路是,先由 PeopleManager中的 人物求救,当然 这图只有警察,应该会有 其他求救者。然后
SendMessageUpwards 给 最上层 PoolManager 类,告诉他 需要 救人还是需要救火 或打人 或等等
PoolManager 负责 整理 接收到的信息,去掉冗余。因为 同一件事 可能会 多次 呼救,我们只要执行一次处理命令就可。
去掉冗余后的 信息,PoolManager会分析出 是 哪个 部门管的,也就是 下面的 几个子类。
然后 派发给他们。比如 打敌人是 警察厅管理,救人是 医院管理。相应派发出去。
警察厅 接到 消息后,会 分派到 各个警察局,相当于车间一样。分派方式,也是根据 每个警察局的 任务空闲度来处理。
警察局 接到 任务。注意,他 不会 派发给 警察。他会登记在 警察局黑板上,也就是 保存起来。
该 警察局的 警察 看到 黑板后,就 全队出发执行 第一条 任务,执行完成 就去做第二件任务。因为不是派发方式,所以很时时。
如果 去执行 打人的 任务时,有一个警察 发现 附近房子起火,他 正好有 救火的 技能,那么他会执行 救火任务。
所以,大家能看到 呼叫模式 和 检索模式 合用 的好处。呼叫是把众多固定要执行的事情,归类分派给每个部门,检索好处是,
不需要 所有场景人物事情检索, 只要 在自己的部门 检索任务 执行,且时时更新任务。
代码量有点大,下一章节 ,会贴代码。期待吧
标签:
原文地址:http://www.cnblogs.com/big-zhou/p/4174268.html