Re: HOWTO use a Factory
Goran wrote:
i have some questions/problems about "Factories".
My origin is a constructor which needs a string in special format.
An example:
class Example_t {
public:
Example_t(std::string &aString);
...
}
My first idea was to check "aString" IN the constructor with
"boost::regex" AND to throw an exception if "aString" was bad.
Now I know it's bad to throw an exception in a constructor.
No, it's not bad. It's the only way to let the caller know that
construction cannot be completed.
But what else?
Depends.
How can I AVOID elegant a construction of an instance of "Example_t"
if "aString" is in bad format?
Check before trying to construct it.
I've read a lot at the net but I'm still unhappy. At some other forum
I got the information to use something like that:
class Validator
{
public:
virtual bool validate(std::string) = 0;
Try to pass by reference to const wherever possible.
};
class A
{
private:
A();
};
class Factory
{
public:
static A createA(std::string, *Validator);
static B createB(std::string, *Validator);
};
But I don't understand how to AVOID a construction with classes above
if the string is in bad format?
The only "elegant" way that comes to mind is to return *a copy* of some
kind of "invalid" or "generic" object that can be inquired about its own
validity and discarded by the caller.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask