问题的诞生
- 我参考了ET的架构,使用组合模式
- 问题复现,这是一个网络游戏,每个客户端里面有多个玩家
player
,每个玩家需要操控不同的角色Role
- 对于本机的
player
来说,需要监控玩家的操作,向服务器发送信息,对于其它的player
就是接收服务器的指令,并且向角色发送指令 - 对于玩家来说,他拥有
ID
这样的数据,我这里是直接使用玩家的IPAddress
作为ID
的 - 而对于每个
Role
来说,他拥有表现层View
和逻辑层Logic
- 所以我就不知道player和Role之间应该怎么关联。
解决
- 如果按照继承的解决办法就是
- 但是我并没有,我创建了Player实体,里面放置共有的数据,其它的功能划分为组件,让他们按需添加。比如远程玩家不需要检测本地操作,那就不加这个组件就行了
- 所有Role也是实体,持有表现层的组件