总结下最近编写游戏服务器逻辑时常用到的设计模式
1 工厂方法模式
创建游戏对象 比较常用的方法, 交由各个对象的管理器负责实例化其管理的对象。 在不同世界需要不同的对象实例时 可以先由世界把不同的对象管理器实例化出来
2 原型模式
大部分非玩家对象 创建时依赖 策划填写的配置数据 ,每次创建都读一次表明显有些多余, 原型模式可以快速的从存根上复制出这些信息来加快对象实例化的效率
3 单例模式
基本上对象管理器都需要这个模式, 对于多线 这种特殊需求 ,可以对单例 进行TLS(私有全局变量) 的改造
4 建造者模式
用得也很多 ,要求对象行为大多为组件提供, 这样在构建过程中就能通过外部参数 指定符合特殊需求的类型对象
5 桥接模式
让脚本可操作宿主对象时, 一般利用 桥接模式 进行 脚本与宿主语言的 信息交换
6 享元模式
一部分策划填写的不会改变的stub数据可以做为享元存在于对象内部, 比如常见的物品属性
7 代理模式
需要给一个对象指针添加引用计数功能时 ,可以给它套个引用计数的代理壳
8 职责链模式
对一个数据进行加工时可以动态影响的一个顺序链, buff系统一般能影响到 技能的释放和执行过程 ,而每个buff对过程的影响就是一个职责链上的一环
9 命令模式
如果每个对象间不能直接调用对方的接口, 比如说多线程模式编写的服务器下 ,就适合用此模式来传递一个对象对另一个对象的操作
10 解释器模式
脚本系统或者是给策划规定的类似有语法规则的表格初始化 时会用到这种模式
11 迭代器模式
群发消息时容易用到的模式
12 观察者模式
适合做用户选定对象的 属性通知, 一般来说只有用户关心的目标对象 才会有较为详细的数据需要实时更新
13 状态模式
状态模式可以控制玩家在特定模式下对其角色的可操作性
14 策略模式
可用来做算法复杂度的选择 ,比如寻路 ai 等