《游戏编程模式》笔记——类型对象
意图
创建一个类A来允许灵活的创建新“类型”,类A的每个势力都代表了不同的对象类型。
模式
定义类型对象类和有类型的对象类。每个类型对象实例代表一种不同的逻辑类型。每种有类型的对象保存对描述它类型的引用。
何时使用
不知道后面还需要什么类型的情况下。
修改或添加新类型不想改变代码或者重新编译。
个人理解,这一章主要讲的是面向数据。
假设我们制作一款RPG游戏,有各种各样的敌人,我们不应该定义一个 Enemy 基类,用 Goblin 类和 Slime 类继承,再编写各自的行为。
我们除了 Enemy 类中,再编写一个 EnmeyData 类,作为前者的成员变量,这个数据类作为类型对象,用来描述这个敌人类型,包括但不限于敌人的名字、最大血量、攻击力等信息,甚至敌人的简单 AI 也可以写在里面,Enemy 类通过数据类提供的数据来表现成对应的敌人。
设计决策
类型对象是封装的还是暴露的?
有类型的对象是如何创建的?
能改变类型吗?
支持何种继承?
参考
《游戏编程模式》