Programmering

Delegater

14. september 2001

Spørsmål: Hva er delegater?

EN: Når et objekt mottar en forespørsel, kan objektet enten håndtere forespørselen selv eller overføre forespørselen til et andre objekt for å utføre arbeidet. Hvis objektet bestemmer seg for å videreformidle forespørselen, sier du at objektet har det videresendt ansvar for å håndtere forespørselen til det andre objektet.

Følgende Stable klasse gir et enkelt eksempel på komposisjon og videresending:

offentlig klasse Stack {private java.util.ArrayList liste; public Stack () {list = new java.util.ArrayList (); } offentlig boolsk tom () {returliste.isEmpty (); } offentlig objektkikk () {if (! tom ()) {returliste.get (0); } returner null; } public Object pop () {if (! empty ()) {return list.remove (0); } returner null; } public Object push (Object item) {list.add (0, item); returvare; }} 

Gjennom komposisjon, Stable holder på en ArrayList forekomst. Som du kan se, Stable videresender deretter forespørslene til ArrayList forekomst. Enkel sammensetning og videresending av forespørsler (som for eksempel Stable klasse presentert ovenfor) blir ofte feilaktig referert til som delegasjon.

Ekte delegasjon er litt strengere. I sann delegering overfører objektet som videresender forespørselen også seg selv som et argument til delegatobjektet, som faktisk gjør jobben.

Tenk på sann delegasjon på denne måten: Noe sender en forespørsel til objekt1. objekt1 videresender deretter forespørselen og seg selv til objekt2 - delegaten. objekt2 behandler forespørselen og gjør noe.

For et utmerket eksempel på ekte delegering, se eksempelkoden for tilstandsmønsteret i Designmønstre Elementer av gjenbrukbar objektorientert programvare av Erich Gamma, et al (se Resources). Du kan også sjekke ut "How to Implement State-Dependent Behavior" av Eric Armstrong (JavaWorld, August 1997).

Tony Sintes er en uavhengig konsulent og grunnlegger av First Class Consulting, Inc., et konsulentselskap som spesialiserer seg på broing av ulike virksomhetssystemer og opplæring. Utenom førsteklasses rådgivning er Tony en aktiv frilansskribent, i tillegg til forfatter av Sams Teach Yourself Object-Oriented Programming in 21 Days.

Lær mer om dette emnet

  • Den berømte Gang of Four-bokaDesign mønstre, Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides (Addison-Wesley Publishing Co., 1995; ISBN0201633612)

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

  • "Hvordan implementere statsavhengig atferd," Eric Armstrong (JavaWorldAugust 1997)

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

  • Ønsker mer? Se Java Q&A Indeks for hele Q&A katalogen

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

  • For mer enn 100 innsiktsfulle Java-tips fra noen av de beste hodene i virksomheten, besøk JavaWorld 's Java-tips Indeks

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

  • Melde seg på JavaWorldgratis ukentlige nyhetsbrev via e-post

    //www.idg.net/jw-abonnement

  • Du finner et vell av IT-relaterte artikler fra søsterpublikasjonene våre på .net

Denne historien, "Delegates", ble opprinnelig utgitt av JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found