Stavo passando per lo schema di progettazione java e ho ottenuto qualche dubbio/domande sul modello di prototipo. Prima lasciami dire quello che ho capito. Prototipo modello di progettazione viene utilizzato per la creazione di oggetti è costoso in termini di memoria o risorse. Quindi in quel caso usiamo il clone di quell'oggetto che è già disponibile. Quindi qual è la differenza tra la creazione di un nuovo oggetto e clone()? Dove memorizza l'oggetto in memoria?java prototype design creazione di oggetti modello
risposta
Il modello di progettazione del prototipo offre un risparmio di costi di due tipi: risparmio di tempo e risparmio di spazio.
Il risparmio di tempo si presenta in situazioni in cui la creazione di un oggetto richiede un accesso costoso alle informazioni ausiliarie, ad esempio la richiesta di dati di configurazione da un file, un database o una rete. Ad esempio, se stai creando molte pagine da un modello che è memorizzato su un server web, è più economico leggere il modello una volta e clonarlo per ottenere il punto di partenza per ogni nuova pagina, piuttosto che interrogare il server web separatamente per ogni pagina.
I risparmi di memoria derivano dal riutilizzo di oggetti immutabili: se l'originale contiene molte stringhe, la creazione di una nuova istanza richiede sia la creazione di stringhe immutabili completamente nuove, sia la gestione manuale dell'interno delle stringhe. L'uso del modello prototipo evita con grazia questo problema consentendo al clone di condividere le parti immutabili del modello.
Il metodo Java clone()
crea solo un nuovo oggetto e copia i valori delle variabili membro in esso. In generale, non è né più né meno costoso della creazione di un nuovo oggetto. L'unica volta che clone()
potrebbe essere più conveniente rispetto alla creazione di un oggetto con new
sarebbe quando il costruttore di un oggetto fa qualcosa di costoso: ad esempio, cosa succederebbe se il costruttore prendesse gli argomenti e li usasse come parte di una query di database? In tal caso, l'utilizzo di clone()
sarebbe più economico, in quanto l'operazione di query costosa non si verificherà.
Ci sono altri motivi per utilizzare questo modello di progettazione: soprattutto, quando gli oggetti richiedono una configurazione complicata prima dell'uso che non può essere fatta comodamente in un costruttore. Immagina che un oggetto avesse 20 proprietà da impostare. Se li imposti con i parametri del costruttore, quel costruttore sarebbe orribilmente brutto - immagina un costruttore con 20 parametri! Invece, potresti costruire un oggetto con forse nessun parametro, impostare i 20 valori usando i metodi del mutatore, quindi clone()
l'oggetto per creare copie pronte quando necessario. clone()
non ha bisogno di parametri, quindi è ovviamente meno brutto. Se avevi bisogno di più copie di diverse versioni di questo oggetto, allora il modello del prototipo diventa attraente.
- 1. Progetto oggetti modello Java
- 2. Creazione di oggetti .NET "ex nihilo"?
- 3. Apprendimento .prototype
- 4. Design - Pattern per impedire oggetti non assegnati
- 5. I benefici di JavaScript Prototype
- 6. Creazione di C++ oggetti
- 7. creazione di oggetti JavaScript
- 8. Modello DAO e oggetti modello
- 9. Ricarica singola copia XPage Design (SCXD) * Java * Application Design
- 10. Java 8 Stream: creazione di oggetti multilivello/compositi
- 11. Creazione di un hash da diversi stringa oggetti Java
- 12. Come intercettare la creazione di oggetti in Java
- 13. Java: creazione di oggetti con coppie chiave/valore?
- 14. Creazione di oggetti nella memoria dello stack in java?
- 15. Creazione libreria documenti utilizzando il modello a oggetti client
- 16. costruttori Java modello
- 17. Creazione di nuovi oggetti da oggetti padre congelati
- 18. Design personalizzato JScollPane Java Swing
- 19. Modello di design adatto per un'applicazione di chat semplice
- 20. Domanda di conflitto Prototype/Mootools
- 21. Creazione di molti oggetti utilizzando django-polimorfico
- 22. javascript prototype inheritance - proprietà condivisa
- 23. Creazione di un elenco di oggetti in Python
- 24. asp.net MVC responsive design miglior modello
- 25. design domanda modello per la manutenibilità
- 26. Design pattern per aggiungere dinamicamente gli attributi agli oggetti
- 27. Creazione di oggetti fittizi nell'unità PHP
- 28. Overhead creazione di thread Java
- 29. JS defineProperty and prototype
- 30. JavaScript: Constructor vs Prototype
questo potrebbe essere utile per voi http://stackoverflow.com/questions/663079/does-cloning-provide-a-performance-improvement-over-constructors-factory-methods –