In OOP, viene menzionata una delegazione di termini. Come viene modellato in una classe? Ho cercato su yahoo ecc, ma ho trovato i collegamenti ai delegati.Che cos'è la delega? Quando dovrei usarlo?
6
A
risposta
20
Immaginate di avere le classi Car
e Engine
:
public class Car {
private Engine engine = new Engine(); //or inject it externally
public void start() {
engine.start();
}
}
In questo esempio i Car
delegati al sottostante Engine
. L'utente dell'auto non può avviare direttamente il motore (a meno che non sia un meccanico). Ma può dire alla macchina di iniziare, e l'auto a sua volta dice al motore di iniziare.
Si vorrebbe usarlo ogni volta che si utilizza la composizione dell'oggetto e si deve utilizzare un metodo di uno degli oggetti di composizione. In tal caso, crei un metodo che lo deleghi.
Problemi correlati
- 1. polimorfico_allocatore: quando e perché dovrei usarlo?
- 2. Che cos'è un MvcHtmlString e quando dovrei usarlo?
- 3. Che cos'è l'NHibernate e perché dovrei usarlo?
- 4. Che cos'è pyximport e come dovrei usarlo?
- 5. SignInManager, che cos'è e come, quando usarlo?
- 6. Che cos'è __declspec e quando devo usarlo?
- 7. Cos'è JAXB e perché dovrei usarlo?
- 8. Che cos'è un indice di testo completo e quando dovrei usarlo?
- 9. Cos'è Request.InputStream e quando usarlo?
- 10. @ModelAttribute annotazione, quando usarlo?
- 11. cos'è ICustomTypeDescriptor e quando usarlo?
- 12. Che cos'è un mock e quando dovresti usarlo?
- 13. composto da Rails - quando usarlo?
- 14. Pool di thread Tomcat? Commentato in tomcat.conf, dovrei usarlo?
- 15. Che cos'è JBPM? Perché usarlo?
- 16. Nessun errore quando la firma delega non corrisponde a
- 17. Cos'è il protocollo TDS versione 8.0 e perché dovrei usarlo?
- 18. Quale database dovrei usare per memorizzare i record e come dovrei usarlo?
- 19. Quando dovrei usare la sintassi "(function() {...})();"?
- 20. spiegazione di D_GNU_SOURCE Perché usarlo e quando?
- 21. Quando dovrei chiamare super?
- 22. viewview android viewview. quando usarlo, e quando non su
- 23. C# Quando dovrei usare List e quando dovrei usare l'arraylist?
- 24. La delega Kerberos non funziona in chrome
- 25. Quando dovrei usare Sql Azure e quando dovrei usare la tabella Storage?
- 26. Quando dovrei usare AQL?
- 27. Livello isolamento - Serializzabile. Quando dovrei usare questo?
- 28. Quando dovrei usare l'attributo in C#?
- 29. Quando dovrei usare CompiledQuery?
- 30. Quando dovrei usare async/await e quando no?
+1 Per estendere questo. L'ereditarietà fa anche delega, implicitamente al/ai genitore/i. Quello che descrivi sopra è una delega esplicita. – jer
@jer Penso che l'ereditarietà non faccia la delega. La delega sta gestendo la responsabilità di qualche altro oggetto. L'altro oggetto può essere della stessa classe o di una classe totalmente diversa. Mentre in caso di ereditarietà, ogni oggetto condivide lo stesso insieme di metodi. – nktsg