基于策略的泛型资源管理器-初步思考

本文探讨了游戏开发中资源管理器的设计方法,提出使用模板来实现不同资源类型的灵活管理,并介绍了如何通过策略模式来定制资源的创建和淘汰算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资源管理器的作用在游戏开发和其它应用里是非常有用的。
设计资源管理应该做到通用。一般做法是采用单根继承的资源对象。就是所有的对象都需要从单根派生。这样的做法不是特别灵活(好处是做成动态连接库的时需要注意的东西比较少)。
所以我比较喜欢的是使用模板。模板唯一的缺点就是做动态库比较恶心(这个恐怕只有做过的人才能体会。),但是基于基于模板的管理器类处理各种需要变化的算法比较麻烦。比如,各种调度算法,不同的资源需要有不同的方式去创建。前面发布过一个资源管理器。http://blog.youkuaiyun.com/Nhsoft/archive/2005/11/19/532884.aspx 并没有很好解决这个问题了。
处理这个问题比较好的方案是把各种策略做成一个个模板参数。方法如下:

template <typename ResType> class TSimpleResCreator
{
public:
ResType* newInstance()
{
return ResType::newInstance();//ResType;
}

void deleteInstance(ResType* pRes)
{
ResType::deleteInstance(pRes);
}
};

template <typename ResType , typename _TCreator = TSimpleResCreator<ResType> >
class TBaseResMgr : public _TCreator , public IResManager
{

}
这里使用了一个创建策略。这样的话可以采用不同的创建策略,比如纹理和文件的创建方法显然是不一样的。

接下来的工作,要把其它的策略分开。比如资源淘汰算法。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值