其整體結(jié)構(gòu)不怎么面向?qū)ο?br />
以一份全局指針的方式訪問某個系統(tǒng)模塊或管理器,一切沿襲自C版本的idTech設(shè)計,如下
// FileSystem.h
class idFileSystem {
public:
virtual void Init( void ) = 0;
virtual void Shutdown( void ) = 0;
// methed...
virtual void ListFiles( ... ) = 0;
};
extern idFileSystem* fileSystem;
// FileSystem.cpp
#include "FileSystem"
class idFileSystemLocal: public idFileSystem {
public:
void Init( void );
void Shutdown( void );
// methed...
void ListFiles( ... );
};
idFileSystemLocal fileSystemInstance;
idFileSystem* fileSystem = &fileSystemInstance;
void idFileSystemLocal::Init( void ) {
}
void idFileSystemLocal::Shutdown( void ) {
}
// methed...
void idFileSystemLocal::ListFiles( ... ) {
}
然后其使用端代碼如下:
fileSysem->Init();
fileSystem->ListFile( files, .... );
fileSystem->Shutdown();
這種手法大量運(yùn)用,很好的達(dá)到了子系統(tǒng)間的解耦!!
里面的idCommon, idCmdSystem, idRenderSystem, idSoundSystem, idCVarSystem, idGame等,都是這一套
簡單而有效的tip,這樣以后的某個模塊要做成動態(tài)庫版本,只需通過獲得這個接口指針就可