欢迎光临散文网 会员登陆 & 注册

《游戏编程模式》笔记——子类沙箱

2023-09-13 04:23 作者:黑白色的枫  | 我要投稿

意图

用一系列由基类提供的操作定义子类中的行为。

模式

基类定义抽象的沙箱方法和几个提供的操作。 将操作标为protected,表明它们只为子类所 使用。 每个推导出的沙箱子类用提供的操作实现了沙箱函数。


实际上,子类沙箱的主要目的是减少子类与其他系统的代码的耦合,将这些耦合转移和集中到到基类中,由基类提供通用的行为给子类使用。

设计决策

应该提供什么操作?

如果提供的操作只被一个或几个子类使用,将操作加入基类的收益不会太多。

当调用其他地方的方法,并且没有修改状态就有更少的干扰,属于“安全的”耦合。

如果操作知识提供了外部系统的转发调用,这样的代码价值也比较低,除非这些方法接触了不想暴露给子类的状态。

方法应该直接提供,还是包在对象中提供?

例如我们不应该直接在角色的基类中去调用音频组件播放声音,而是通过音频系统提供的函数来播放声音,由音频系统通过函数接受的参数去使用音频组件播放指定的声音。


《游戏编程模式》笔记——子类沙箱的评论 (共 条)

分享到微博请遵守国家法律