Делегати

14 септември 2001 г.

В: Какво представляват делегатите?

О: Когато даден обект получи заявка, той може или да обработи самата заявка, или да предаде заявката на втори обект, за да свърши работата. Ако обектът реши да предаде заявката, вие казвате, че обектът е препратил отговорността за обработка на заявката към втория обект.

Следният Stackклас предоставя прост пример за композиция и препращане:

публичен клас Stack {списък на частния java.util.ArrayList; публичен стек () {list = new java.util.ArrayList (); } публично логическо празно () {return list.isEmpty (); } публичен обект peek () {if (! празен ()) {return list.get (0); } върне null; } публичен обект pop () {if (! празен ()) {return list.remove (0); } върне null; } публично натискане на обект (елемент на обект) {list.add (0, елемент); Върни предмета; }}

Чрез композиция Stackдържи на ArrayListекземпляр. Както можете да видите, Stackслед това препраща заявките към ArrayListинстанцията. Простият състав и препращането на заявки (като този на Stackкласа, представен по-горе) често погрешно се нарича делегиране.

Истинското делегиране е малко по-строго. При истинско делегиране обектът, който препраща заявката, също се предава като аргумент на обекта делегат, който всъщност върши работата.

Помислете за истинското делегиране по този начин: Нещо изпраща заявка до object1. object1след това препраща заявката и себе си към object2- делегата. object2обработва заявката и върши някаква работа.

За отличен пример за истинско делегиране, моля, вижте примерния код за държавния модел в Design Patterns Elements of Reusable Object-Oriented Software от Erich Gamma, et al (вж. Ресурси). Можете също така да проверите „Как да приложим държавно зависимо поведение“ от Ерик Армстронг ( JavaWorld , август 1997 г.).

Тони Синтес е независим консултант и основател на First Class Consulting, Inc., консултантска фирма, специализирана в преодоляването на различни корпоративни системи и обучение. Извън първокласното консултиране, Тони е активен писател на свободна практика, както и автор на Sams Научи себе си обектно-ориентирано програмиране за 21 дни.

Научете повече за тази тема

  • Известната банда от четири модели за дизайн на книги , Ерик Гама, Ричард Хелм, Ралф Джонсън, Джон Влисайдс (Addison-Wesley Publishing Co., 1995; ISBN0201633612)

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

  • „Как да приложим държавно зависимо поведение“, Ерик Армстронг ( JavaWorld , август 1997 г.)

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

  • Искам още? Вижте Индекса за въпроси и отговори на Java за пълния каталог с въпроси и отговори

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

  • За над 100 задълбочени съвети Java от някои от най-добрите умове в бизнеса, посетете JavaWorld " и Java Съвети Index

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

  • Регистрирайте се за безплатните седмични бюлетини по имейл на JavaWorld

    //www.idg.net/jw-subscribe

  • Ще намерите изобилие от свързани с ИТ статии от нашите сестрински публикации в .net

Тази история „Делегати“ първоначално е публикувана от JavaWorld.