Domanda

Se si utilizza la funzione AutoLoader (con SPL_AutoLoad_Register), è più necessario:

    .
  • singleton: tutte le classi necessarie verranno caricate da Autoloader comunque, incluso database, registri, R & R, frontali ecc. Quindi è necessario "sempre su" ecc. L'oggetto non è chiaro a me
  • Fabbrica: Ancora una volta, AutoLoader caricherà la classe richiesta, quindi c'è un punto per utilizzare la classe di fabbrica per installare le classi di implementazione delle classi di implementazione, o estendendo la classe astratta
È stato utile?

Soluzione

Un singleton viene utilizzato per tenere una singola istanza di una particolare classe, in modo che ogni volta che viene recuperata l'istanza, sarà sempre lo stesso. Pertanto, l'impostazione dei dati significherà che i dati sono sempre gli stessi quando lo recuperano.

Questo è diverso dal caricamento automatico di una classe, come ogni volta che si crea una nuova istanza ripristina lo stato alla classe 'predefinito. Tuttavia, i singletons dovrebbero essere usati con parsimonia, poiché sono essenzialmente glorificati variabili globali.

Un modello di fabbrica dovrebbe essere utilizzato per delegare la determinazione e la creazione di oggetti. È usato quando non si desidera specificare una classe di calcestruzzo, ma richiedere una certa sottoclasse sotto una serie di condizioni. Non è possibile passare i parametri di costruzione a un autoloader, e una logica complessa potrebbe essere necessaria per elaborare quale oggetto dovrebbe essere restituito da una fabbrica, quindi di nuovo non raggiunge la stessa cosa.

Un Autoloader deve essere solo utilizzato per trovare un file di classe e includerlo. Non dovrebbe (e non può) fare alcuna logica come l'instansione di un oggetto o prendere decisioni su quale oggetto da caricare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top