verhindern Ich habe eine Factory Method
, um eine Klasse zu instanziieren. Gibt es eine Möglichkeit, diese Klasse von direkter Instanziierung abzuhalten?Factory-Methode: Eine Klasse von Direct Instancing
Die einzige Option, die ich sehe, ist ein Argument in die __construct()
übergeben, aber das ist nicht etwas, das ich suche.
Auf der anderen Seite wäre die __construct()
private wäre ideal, aber ich möchte nicht MyClass
die Factory
ohne tatsächlichen Bedarf zu erweitern.
Was denkst du?
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');
}
}
}
Zuerst; Die Definition von MyClass sollte noch einmal überarbeitet werden: ** class MyClass() {** sollte ** class MyClass ** ohne **() ** nach dem class MyClass lesen ;-) – Poiz
@Poiz danke, didn bemerke diesen Tippfehler nicht. Jetzt korrigiert. –
Was ist Ihr Anwendungsfall? – PeeHaa