Programavimas

Delegatai

2001 m. Rugsėjo 14 d

Klausimas: Kas yra delegatai?

A: Kai objektas gauna užklausą, objektas gali pats tvarkyti užklausą arba perduoti užklausą antrajam objektui atlikti darbą. Jei objektas nusprendžia perduoti užklausą, jūs sakote, kad objektas turi persiųsti atsakomybė už prašymo nagrinėjimą antrajam objektui.

Sekantis Sukrauti klasėje pateikiamas paprastas kompozicijos ir persiuntimo pavyzdys:

public class Stack {private java.util.ArrayList list; public Stack () {list = new java.util.ArrayList (); } viešoji loginė tuščia () {return list.isEmpty (); } public Object peek () {if (! empty ()) {return list.get (0); } return null; } public Object pop () {if (! empty ()) {return list.remove (0); } return null; } public Object push (Object item) {list.add (0, item); grąžinti daiktą; }} 

Per kompoziciją, Sukrauti laikosi „ArrayList“ instancija. Kaip matai, Sukrauti tada persiunčia prašymus „ArrayList“ instancija. Paprasta sudėtis ir prašymų persiuntimas (pvz., Sukrauti aukščiau pateikta klasė) dažnai klaidingai vadinama delegacija.

Tikra delegacija yra šiek tiek griežtesnė. Tikro delegavimo metu objektas, kuris persiunčia užklausą, taip pat perduodamas kaip argumentas deleguotajam objektui, kuris iš tikrųjų atlieka darbą.

Pagalvokite apie tikrąjį delegavimą tokiu būdu: kažkas siunčia užklausą objektas1. objektas1 tada persiunčia prašymą ir save objektas2 - delegatas. objektas2 apdoroja užklausą ir atlieka tam tikrą darbą.

Norėdami sužinoti puikų tikro delegavimo pavyzdį, žr. Valstybės modelio kodą pavyzdyje Daugkartinio naudojimo objektui skirtos programinės įrangos dizaino modeliai pateikė Erichas Gamma ir kt. (žr. šaltinius). Taip pat galite peržiūrėti Erico Armstrongo straipsnį „Kaip įgyvendinti nuo valstybės priklausomą elgesį“ („JavaWorld“, 1997 m. Rugpjūtis).

Tony Sintesas yra nepriklausomas konsultantas ir „First Class Consulting, Inc.“, konsultacinės įmonės, kurios specializacija yra skirtingos įmonės sistemos ir mokymai, įkūrėjas. Už „First Class Consulting“ ribų Tony yra aktyvus laisvai samdomas rašytojas, taip pat knygos „Sams išmokyk save į objektą orientuoto programavimo per 21 dieną“ autorius.

Sužinokite daugiau apie šią temą

  • Garsioji keturių gaujos knygaDizaino modeliai, Ericas Gamma, Richardas Helmas, Ralphas Johnsonas, Johnas Vlissidesas (Addison-Wesley Publishing Co, 1995; ISBN0201633612)

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

  • „Kaip įgyvendinti nuo valstybės priklausomą elgesį“, Ericas Armstrongas („JavaWorld“, 1997 m. Rugpjūtis)

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

  • Norite daugiau? Žr „Java“ klausimai ir atsakymai Viso klausimų ir atsakymų katalogo rodyklė

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

  • Norėdami gauti daugiau nei 100 įžvalgių „Java“ patarimų iš geriausių verslo atstovų, apsilankykite „JavaWorld“s „Java“ patarimai Indeksas

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

  • Prisiregistruokite „JavaWorld“nemokami savaitiniai el. pašto naujienlaiškiai

    //www.idg.net/jw-subscribe

  • Rasite daugybę su IT susijusių straipsnių iš mūsų seserų leidinių .net

Šią istoriją „Delegatai“ iš pradžių išleido „JavaWorld“.

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