重发试试:A Polymorphic Product Creator.

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

I have create a article about this topic, but the all lettles pile

together, so I rewrite it again.

I create a polymorphic product creator which allows you to create objects using its name as a template argument, return

a pointer to the object with its base class type.

Here is the implementation:

template

struct AbstractCreator

{

virtual AbstractCreator* operator()(){throw();return 0;}

};

Because we don't want to create a object which is

base typed that unsually is a abstruct class, we have to

prevent the creator from calling the function

AbstractCreator::operator()().But we can not make it a pure

function, the reason for which I will point out in the next article .

template class CreatePolicy = Loki::CreateUsingNew

struct ProductCreator:

public AbstructCreator

{

AbstructCreator* operator()()

{ return CreatePolicy::Create();}

};

The code is so few but not so easy to understand.

Let's have a view about how the creator works:

We assum that class GTank and GBullet are derived

from class GObject,then we can create codes like this:

GObject* pO1 = ProductCreator()();

GObject* pO2 = ProductCreator()();

Why we need a ProductCreator?

There are two reasons.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航