Delegati

14 settembre 2001

D: Cosa sono i delegati?

R: Quando un oggetto riceve una richiesta, l'oggetto può gestire la richiesta stessa o passare la richiesta a un secondo oggetto per eseguire il lavoro. Se l'oggetto decide di inoltrare la richiesta, si afferma che l'oggetto ha inoltrato la responsabilità della gestione della richiesta al secondo oggetto.

La Stackclasse seguente fornisce un semplice esempio di composizione e inoltro:

classe pubblica Stack {elenco java.util.ArrayList privato; public Stack () {list = new java.util.ArrayList (); } public boolean empty () {return list.isEmpty (); } public Object peek () {if (! empty ()) {return list.get (0); } restituire null; } public Object pop () {if (! empty ()) {return list.remove (0); } return null; } public Object push (Object item) {list.add (0, item); articolo di ritorno; }}

Attraverso la composizione, si Stackaggrappa a ArrayListun'istanza. Come puoi vedere, Stackquindi inoltra le richieste ArrayListall'istanza. La composizione semplice e l'inoltro della richiesta (come quella della Stackclasse presentata sopra) viene spesso erroneamente definita delega.

La vera delega è un po 'più rigorosa. Nella vera delega, l'oggetto che inoltra la richiesta passa anche se stesso come argomento all'oggetto delegato, che esegue effettivamente il lavoro.

Pensa alla vera delega in questo modo: qualcosa invia una richiesta a object1. object1quindi inoltra la richiesta e se stesso al object2delegato. object2elabora la richiesta e fa del lavoro.

Per un eccellente esempio di vera delega, vedere il codice di esempio per il modello di stato in Design Patterns Elements of Reusable Object-Oriented Software di Erich Gamma, et al (vedi Risorse). Puoi anche controllare "How to Implement State-Dependent Behavior" di Eric Armstrong ( JavaWorld , agosto 1997).

Tony Sintes è un consulente indipendente e fondatore di First Class Consulting, Inc., una società di consulenza specializzata nel collegamento di diversi sistemi aziendali e formazione. Al di fuori di First Class Consulting, Tony è uno scrittore freelance attivo, nonché autore di Sams Teach Yourself Object-Oriented Programming in 21 Days.

Ulteriori informazioni su questo argomento

  • Il famoso libro di Gang of Four Design Patterns , Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides (Addison-Wesley Publishing Co., 1995; ISBN0201633612)

    //www.amazon.com/exec/obidos/ASIN/0201633612/javaworld

  • "How To Implement State-Dependent Behavior", Eric Armstrong ( JavaWorld , agosto 1997)

    //www.javaworld.com/javaworld/jw-08-1997/jw-08-stated.html

  • Voglio di più? Vedere l' indice di domande e risposte Java per il catalogo completo di domande e risposte

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Per oltre 100 suggerimenti penetranti Java da alcune delle migliori menti del settore, visitare JavaWorld' s Java Consigli Indice

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Iscriviti alla newsletter settimanale gratuita di JavaWorld

    //www.idg.net/jw-subscribe

  • Troverai una vasta gamma di articoli relativi all'IT tratti dalle nostre pubblicazioni gemelle su .net

Questa storia, "Delegates" è stata originariamente pubblicata da JavaWorld.