Делегаты

14 сентября 2001 г.

В: Что такое делегаты?

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

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

открытый класс Stack {частный список java.util.ArrayList; общественный стек () {список = новый java.util.ArrayList (); } public boolean empty () {return list.isEmpty (); } общедоступный объект peek () {если (! пусто ()) {return list.get (0); } return null; } общедоступный объект pop () {если (! пусто ()) {return list.remove (0); } return null; } общедоступный объект push (объектный элемент) {list.add (0, item); вернуть изделие; }}

Через композицию Stackдержится за ArrayListэкземпляр. Как видите, Stackзатем запросы пересылаются ArrayListэкземпляру. Простая композиция и пересылка запросов (например, Stackкласса, представленного выше) часто ошибочно называют делегированием.

Истинное делегирование немного более строгое. В истинном делегировании объект, который пересылает запрос, также передает себя в качестве аргумента объекту делегата, который фактически выполняет работу.

Подумайте об истинном делегировании следующим образом: что-то отправляет запрос object1. object1затем пересылает запрос и себя object2делегату. object2обрабатывает запрос и выполняет некоторую работу.

Прекрасный пример настоящего делегирования можно найти в примере кода для шаблона состояния в документе « Элементы шаблонов проектирования многократно используемого объектно-ориентированного программного обеспечения » Эриха Гаммы и др. (См. Ресурсы). Вы также можете проверить «Как реализовать поведение, зависящее от состояния» Эрика Армстронга ( JavaWorld , август 1997 г.).

Тони Синтес - независимый консультант и основатель First Class Consulting, Inc., консалтинговой фирмы, специализирующейся на объединении разрозненных корпоративных систем и обучении. Помимо First Class Consulting, Тони является активным писателем-фрилансером, а также автором книги «Самс научитесь объектно-ориентированному программированию за 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» s Java Советы Index

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

  • Подпишитесь на бесплатную еженедельную рассылку новостей JavaWorld по электронной почте

    //www.idg.net/jw-subscribe

  • Вы найдете множество статей по ИТ из наших родственных публикаций на .net

Этот рассказ «Делегаты» изначально был опубликован JavaWorld.