本文主要是介绍ogre设计模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我承认我学的东西太杂了。
首先是factory method模式,即工厂方法。
设计模式是这么说的:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
我理解的就是,可以通过一个接口去创建多种对象,C++中其实就是利用虚函数的原理,我不需要知道现在我到底拥有哪个工厂。
拿ArchiveFactory做例子。
class _OgreExport FileSystemArchiveFactory : public ArchiveFactory
class _OgrePrivate ZipArchiveFactory : public ArchiveFactory
class _OgreExport FileSystemArchive : public Archive
class _OgreExport ZipArchive : public Archive
ArchiveFactory是一个虚类,有两个子类FileSystemArchiveFactory和ZipArchiveFactory,需要创建的对象就是FileSystemArchive和ZipArchive。
其实首先我们应该在头脑中清晰的就是Archive到底用在哪些场合了。在ogre中,其实FileSystemArchiveFactory和ZipArchiveFactory都不会直接被客户所使用,而是通过ArchiveManager来间接使用的,就是装载文件夹或者zip压缩包。
Archive* ArchiveManager::load( const String& filename, const String& archiveType)
就是这个函数。
ArchiveManager中有这么几个成员
typedef map<String, ArchiveFactory*>::type ArchiveFactoryMap;ArchiveFactoryMap mArchFactories;typedef map<String, Archive*>::type ArchiveMap;ArchiveMap mArchives;
他的方法也很少,总之是个很好理解的类。
还有粒子系统也用了工厂方法模式:
class _OgreExport ParticleSystemRendererFactory : public FactoryObj<ParticleSystemRenderer>, public FXAlloc
class _OgreExport BillboardParticleRendererFactory : public ParticleSystemRendererFactory
ParticleSystemManager作为接口
class _OgreExport ParticleSystemManager: public Singleton<ParticleSystemManager>, public ScriptLoader, public FXAlloc
这个类没用过,没发言权。
这篇关于ogre设计模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!