Frage

Wenn man die Autoloader-Funktion (mit SPL_AUTOLOAD_Register) verwendet, muss man mehr benötigen:

    .
  • Singleton: Alle benötigten Klassen werden trotzdem von Autoloader geladen, einschließlich Datenbank, Protokolle, R & R, Fronten usw., so dass "immer ein" usw. erforderlich ist. Das Objekt ist mir nicht klar, dass mir
  • nicht klar ist
  • Factory: Wieder last der Autoloader die erforderliche Klasse, und gibt es also einen Punkt, um die Fabrikklasse zu verwenden, um die Implementierungsschnittstelle der Arbeitnehmerklassen zu instanziieren oder die abstrakte Klasse
  • zu erweitern.
War es hilfreich?

Lösung

Ein Singleton wird verwendet, um eine einzelne Instanz einer bestimmten Klasse zu halten, sodass sie immer dann derselbe ist, wann immer die Instanz abgerufen wird. Daher bedeuten, dass die Einstellungsdaten beim Abrufen der Daten immer gleich sind.

Dies unterscheidet sich von der automatischen Laden einer Klasse, da jedes Mal, wenn Sie eine neue Instanz erstellen, den Status auf die Standardeinstellung zurücksetzen. Trotzdem sollten Singletons sparsam eingesetzt werden, da sie im Wesentlichen glorifizierte globale Variablen sind.

Ein Fabrikmuster sollte verwendet werden, um die Bestimmung und Erstellung von Objekten zu delegieren. Es wird verwendet, wenn Sie keine konkrete Klasse angeben möchten, jedoch unter einer Reihe von Bedingungen eine bestimmte Unterklasse erfordern. Sie können die Konstruktionsparameter nicht an einen Autoloader angeben, und eine komplexe Logik ist möglicherweise erforderlich, um herauszufinden, dass das Objekt aus einer Fabrik zurückgegeben werden sollte, sodass es nicht dasselbe erreicht wird.

Ein Autoloader sollte einfach verwendet werden, um eine Klassendatei zu finden und es einzuschließen. Es sollte nicht (und kann) keine Logik, z. B. Instantiating ein Objekt oder die Entscheidungen darüber, welchen Objekt zu laden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top