将游戏中的行为封装为自我管理的对象
什么是自我管理的对象
顾名思义,自我管理的对象应该有自我管理能力,一旦创建后,创建者不需要关心其运行,也不用负责销毁.自我管理的对象会在自我的生命周期内完成特定的任务,然后自我析构.
自我管理对象的特点
自我管理的对象有以下特点:
a.
有固定的生命周期,生命周期结束后,自我销毁
b.
对象的使用者只需要负责创建,不用负责销毁.
c.
在创建时,传入对象执行所需的上下文(context)
d.
在生命周期内,对象根据上下文执行相应的逻辑
为什么要使用自我管理的对象
自我管理的小对象有自动析构的特点,因此使用它可以减少内存泄露的bug.另外,小对象生命周期开始后,与对象的使用者无关.它只是按照context执行相应的逻辑.
自我管理对象使用实例
自我管理的对象比较适合用来封装一些固定的算法,比如怪物的AI,技能和行为等.例如:
1.
一个怪物需要从a点寻路到b点,我们只需要写一个自我管理的类比如PathFindAction,传入路径参数,和怪物对象,一旦创建PathFindAction之后,其自动执行,将怪物从a点移动到b点.然后自我析构.
2.
玩家将一个怪物以抛物线的方式击飞,我们只需要写一个ParabolaToPosAction,传入怪物对象,和抛物线参数,创建ParabolaToPosAction后,其会将怪物以抛物线的方式移动到指定的点.
从上面两个实例可以看出,将行为和算法封装为自我管理的对象,可以更抽象的对游戏世界建模,我们可以创建不同的Action,复用它们来创建一个游戏世界.
下一节,我将讲述自我管理对象的类图框架.