Ich glaube nicht, dass es so etwas wie eine "strenge Definition" eines Musters gibt. Von Natur aus gibt es Muster, die das Wesen eines Problems erfassen, das immer wieder in Software auftaucht, und skizzieren, wie eine Lösung aussehen könnte.
Spezifisch mit dem Fabrikmuster, nein, es gibt keine Anforderung, dass die Fabrikmethoden statisch sind. Die Essenz des Musters besteht darin, dass Sie ein Objekt haben, das für das Erstellen von Instanzen einer anderen Klasse verantwortlich ist. Wie Sie dies tun, liegt wirklich bei Ihnen, obwohl eine übliche Methode, wie im Muster beschrieben, darin besteht, eine statische Methode für eine Klasse zu verwenden. Wir haben jedoch einen Mechanismus in einem unserer Systeme, der eigentlich zweistufig ist. Sie verwenden eine statische Methode für eine Klasse, um das Factory-Objekt zu erstellen, das so konfiguriert werden kann, dass es aus einer Reihe von Implementierungen ausgewählt werden kann, und dann das Factory-Objekt zum Ausstanzen von Instanzen des Objekts, die Sie für die eigentliche Arbeit benötigen.
Beachten Sie auch die Implementierung des Factory-Musters in einer Sprache, die keine statischen Methoden hat. In Scala würden Sie beispielsweise ein Objekt anstelle einer Klasse verwenden. Obwohl das Verhalten dieser Methode der Verwendung statischer Methoden in einer Klasse in Java sehr ähnlich ist, unterscheidet sich die Art der Implementierung erheblich.
+1 wirklich wichtig, nicht zu erwarten, dass Muster dein Denken für dich tun, Muster sind nicht streng, Muster sind nicht nachsichtig, Muster sind nicht unter Kontrolle! – djna