Hi,
nicht wirklich bzw. unbedingt. Es war nur einfach zufällig gewählter Pseudocode.
Ich benutze hier (sehr erfolgreich nebenbei bemerkt) eine selbstgeschriebene XmlObjectFactory, die entweder Objekte ganz ohne Konstruktor-Unterstützung erzeugt via Xml-Serialisierung oder Propertywerte anhand von konfiguierten Werten in einer Xml-Datei setzt.
Das ganze ist ein Satz statischer Methoden auf einer Basisklasse von der mein Objekt erbt. (z.b. CreateFromContext ...) Diese statischen Methoden sind die Fabrikmethoden. Sie benutzen dann eine AbstractFactory, welche die Xml Deserialisierung vornimmt. usw.
Dein Beispiel der Factory wäre imho schon eine AbstractFactory, die Abstrahierung wäre "db", was entweder eine konkrete mysqlDB oder oracleDB oder sonstDB sein könnte.
Spielzeug s = SpielzeugFabrik.Produce("Plüschtier");
if(!s.LookNice) s.Kill();
Warum Factory-Methods performance-kritisch sein können, kann man nicht pauschal diskutieren, schon gar nicht beantworten. Es kommt auf die Umstände an. Auch das Aufrufen des Konstruktors kann je nach Context performance-kritisch sein ;)
Cheers, Frank