Boost logo

Boost :

From: Stathie Triadis (stathie_at_[hidden])
Date: 2008-02-28 18:04:44


Boost Users/Developers,

I'm writing to gauge interest in an 'abstract factory',
very similar to the recently accepted functional/factory.

I realise there has been interest in this idea in the past
(ctor_fn), but nothing seems to have come of it (that I am
aware of). Does anything similar exist?

Example code:

//
// Given an inheritance hierarchy where the base class
// constructor has a certain signature...
//
struct A
{
    A(const string&, int){}
    virtual ~A(){}
};
struct B : public A
{
    B(const string& s, int i) : A(s, i) {}
    virtual ~B(){}
};

//
// typedef some factories...
//
typedef abstract_factory<A*(const string&, int)> AFactory;
typedef concrete_factory<AFactory, B*, MyAllocator> BFactory;

//
// Use them...
//
AFactory* factory = new BFactory;
A* a = (*factory)("a string", 1); // Look ma, temporaries.
assert(dynamic_cast<B*>(a));

vector<string> v1;
vector<A*> v2;
transform(v1.begin(), v1.end(), back_inserter(v2),
          bind<A*>(ref(*factory), _1, 1234));

The naming of 'abstract_factory' and 'concrete_factory' is
reminiscent of the Loki AbstractFactory and ConcreteFactory,
as is the idea of passing the abstract_factory as a template
parameter into concrete_factory.

I'm new to this mailing list as well, so I'm not aware of
all previous conversation on this topic.

What do you think?
Stathi


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk