mercredi 4 mai 2016

Factory Method: prevert a class from direct instance

I have a Factory Method to instance a class. Is there a way to prevent this class from direct instancing?

The only option I see is to use an argument passed into the __construct(), but that's not something I'm looking for.

On the other hand, making the __construct() private would be ideal, but I don't want MyClass to extend the Factory without actual need.

What do you guys think?

Factory Method:

class Factory
{
    public static function instance()
    {
        return new MyClass(true);
    }
}

MyClass:

class MyClass
{
    public function __construct($isFactory = false)
    {
        if (!$isFactory) {
            throw new Exception('Use Factory::instance() to create an object');
        }
    }
}

Aucun commentaire:

Enregistrer un commentaire