当你写一个程序,很多情况下,是很难找到一个最佳的解决方案不能,一个重要的部分是你可以做到这一点的最好的东西。
例如,正在使用Create函数的一类。
在下列情况下使用的类的创建函数。
答:作为最后检查错误,当你想给类分
两个。如果虚拟课堂
如果一个位拒收的外观细节。
例如,文件(图片)纹理读取的类,我想如果你说,一个典型的类看起来像下面的表格。
类GxSourceTexture:公共GxTexture
{
市民:
GxSourceTexture();
虚拟GxSourceTexture();
布尔负载(常量字符*文件名);
;}
我如何使用这个类如下:'LL。一个错误的彻底检查,如果
GxSourceTexture * pkSourceTexture =新GxSourceTexture();
如果(pkSourceTexture == 0)
{
错误处理;
}
如果(!pkSourceTexture - >负载(“image.dds”))
{
错误处理;
删除pkSourceTexture;
}
相当复杂的处理错误的,从文件中读取时,每次你必须GxSourceTexture。
如果这种情况下更容易处理如下。
类GxSourceTexture:公共GxTexture
{
市民:
静态GxSourceTexture *创建(常量字符*文件名);
保护:
GxSourceTexture();
虚拟GxSourceTexture();
布尔负载(常量字符*文件名);
;}
GxSourceTexture * GxSourceTexture ::创建(常量字符*文件名)
{
GxSourceTexture * pkThis =新GxSourceTexture();
如果(pkThis = NULL)
返回NULL;
如果(pkThis - >负载(文件名))
返回pkThis;
删除pkThis;
返回NULL;
}
如果你想创建计划内的GxSourceTexture
* GxSourceTexture pkSourceTexture = GxSourceTexture ::创建(“image.dds”);
如果(pkSourceTexture = NULL)
{
错误处理;
}
程序是干净多了,没有?同样,如果你想检查错误,当您创建,创建()函数为静态抓住一个良好的开端。这种方法是非常使用的技术。
现在,如果你看一下第二种情况下,
渲染例如,设计,我的DX9和OpenGL渲染想打开两个。在这种情况下,虚拟课堂将被使用。当您使用一个虚拟的类,创建功能,我们建议您使用。
现在,例如,如果程序...
类GxDX9Renderer:GxRenderer公共
{
GxDX9Renderer();
虚拟GXDX9Renderer();
;}
类GXOGLRenderer:公共GxRenderer
{
GXOGLRenderer();
虚拟的〜GxOGLRenderer();
;}
类GxRenderer
{
GxRenderer();
虚拟GxRenderer();
静态GxRenderer *创建();
;}
create()函数不使用,检查后渲染必须在程序中使用的类的支持。但是,创建()函数,然后在渲染GxRenderer最后指针,程序的入口和一个更紧凑,如果你的手GxRenderer.h可以工作,包括头文件。
仅特别是,在虚拟类并没有提供的,如果这样做,应用层和类GxOGLRenderer GxDX9Renderer类的头文件使该不会有知道的存在,也不是,到被添加库中的渲染类的目的实际源可以处理。 (无其他需要修改应用程序。)
除了这个,创建()函数可用于。
例如,如果您需要,以确保唯一性。在这种情况下,创建()函数可以使用,以确保唯一性。
此外,即使在一个共享的资源管理,创建()函数是可用的。例如,使用源纹理a.dds源很多时候,通过一个共享的资源管理,一旦实际SourceTexture使用,简单的方式,增加了引用变量的值可以使用的程序生成的文件。在这种情况下,用身体来解决如何复制对象类,但很多本身存在的类的对象的内存开销。 (3-D图形中的对象数目比多边形数量较小的内存开销是比较常见的结果。)
没有评论:
发表评论