截止到2023-7-8本人在GCL1,RCL3的阶段,代码还在建设ing,思考有限

背景

在Screeps中,对于每个工种,都需要其有自己的行为模式

同时如果当工种自己的事情做完了,可以去帮着其他的工种做事

同时由于调用工种都从Creeps调用,耦合度高,编码不方便,需要整合为一个单独的工种类

需求

  1. 对于工种的调用需要使用Creeps类的方法进行调用,需要将其封装为一个工种类

  2. 同时需要支持工种间的相互切换

设计

首先将状态模式的变化顺序进行明确

工种状态图.drawio.svg

之后判断变化条件,通过transform方法进行状态变更

由于Creeps为Screeps官方提供的接口,无法变化,所以需要通过适配器模式,进行适配

然后将工种继承这个适配器,调用工种即可

工种调度.drawio.svg

结果

现在只需要通过继承CreepsAdapter类,实现work方法即可进行新工种的行为使用

之后通过在transform方法里传递进需要变化的CreepsAdapter即可