14. septembra 2001
V: Kaj so delegati?
A: Ko objekt prejme zahtevo, lahko sam obdela zahtevo ali pa jo posreduje drugemu objektu, da opravi delo. Če se objekt odloči, da bo zahtevo posredoval naprej, pravite, da je predmet sprejel posredovano odgovornost za obdelavo zahteve do drugega predmeta.
Naslednji Stack
razred ponuja preprost primer sestave in posredovanja:
javni razred Stack {private java.util.ArrayList list; javni sklad () {list = new java.util.ArrayList (); } javno logično prazno () {return list.isEmpty (); } public Object peek () {if (! empty ()) {return list.get (0); } vrni null; } public Object pop () {if (! empty ()) {return list.remove (0); } vrni null; } javni potisk predmeta (predmet predmeta) {list.add (0, element); vrni artikel; }}
Skozi sestavo, Stack
drži na ArrayList
primer. Kot lahko vidite, Stack
nato zahteve posreduje ArrayList
primer. Preprosta sestava in posredovanje zahtev (kot je na primer Stack
razred, predstavljen zgoraj) se pogosto zmotno imenuje delegacija.
Resnično pooblastilo je nekoliko bolj strogo. Pri resničnem delegiranju se objekt, ki posreduje zahtevo, tudi prenese kot argument na delegirani objekt, ki dejansko opravi delo.
O resničnem prenosu pomislite tako: Nekaj pošlje zahtevo objekt1
. objekt1
nato prošnjo in sebe posreduje na objekt2
- delegat. objekt2
obdela zahtevo in opravi nekaj dela.
Za odličen primer resničnega prenosa glejte primer kode za državni vzorec v Elementi vzorcev oblikovanja predmetno usmerjene programske opreme za večkratno uporabo avtor Erich Gamma in drugi (glej Viri). Ogledate si lahko tudi "Kako izvesti vedenje, ki je odvisno od države", Eric Armstrong (JavaWorld, Avgust 1997).
Tony Sintes je neodvisni svetovalec in ustanovitelj First Class Consulting, Inc., svetovalnega podjetja, ki je specializirano za premostitev različnih podjetniških sistemov in usposabljanja. Zunaj prvovrstnega svetovanja je Tony aktivni samostojni pisec in avtor knjige Sams Teach Yourself Objekt-Oriented Programming v 21 dneh.Preberite več o tej temi
- Slavna knjiga Gang of FourVzorci oblikovanja, Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides (Addison-Wesley Publishing Co., 1995; ISBN0201633612)
//www.amazon.com/exec/obidos/ASIN/0201633612/javaworld
- "Kako izvajati vedenje, ki je odvisno od države," Eric Armstrong (JavaWorld, Avgust 1997)
//www.javaworld.com/javaworld/jw-08-1997/jw-08-stated.html
- Želijo več? Glej Vprašanja in odgovori o Javi Kazalo za celoten katalog Vprašanj
//www.javaworld.com/columns/jw-qna-index.shtml
- Obiščite več kot 100 vpoglednih nasvetov Java nekaterih najboljših mož v poslu JavaWorld 's Java Nasveti Kazalo
//www.javaworld.com/columns/jw-tips-index.shtml
- Prijavite se za JavaWorldbrezplačna tedenska glasila po e-pošti
//www.idg.net/jw-subscribe
- Na naslovu .net boste našli ogromno člankov, povezanih z IT, iz naših sestrskih publikacij
To zgodbo "Delegati" je prvotno objavil JavaWorld.