Анализ программного кода делегирования

Анализ программного кода делегирования

Предложенный выше метод Main() начинается с создания экземпляров типов Garage и ServiceDepartment. Когда вы пишете

// Помыть все грязные машины.

g.ProcessCars(new Car.CarDelegate(sd.WashCar));

это на самом деле означает: "Добавить указатель на метод ServiceDepartment.WashCar() к объекту Car.CarDelegate и передать этот объект в Garage.ProcessCars()". Подобно любому автомобильному предприятию в реальном мире, все заказы передаются в отдел технического обслуживания (что и объясняет, почему замена масла, обычно требующая 30 минут, занимает целых 2 часа). С учетом этого ProcessCars() можно интерпретировать так.

// CarDelegate указывает на функцию ServiceDepartment.WashCar.

public void ProсessCars(Car.CarDelegate proc) {

 foreach (Car с in theCars)

 proc(c); // proc(c) =› ServiceDepartment.WashCar(c)

 …

}

Точно так же, если вы говорите

// Поменять шины.

g.ProcessCars(new Car.CarDelegate(sd.RotateTires));

то ProcessCars() можно интерпретировать, как

// CarDelegate указывает на функцию ServiceDepartment.RotateTires.

public void ProcessCars(Car.CarDelegate proc) {

 …

 foreach(Car с in the Cars)

 proc(c); //proc(c) =› ServiceDepartment.RotateTires(e)

 …

}

Исходный код. Проект CarGarage размещен в подкаталоге, соответствующем главе 8.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Использование фрагментов программного кода C#

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Использование фрагментов программного кода C# Перед использованием TextPad следует упомянуть еще об одном бесплатном расширений, которое вы можете установить. Перейдите на страницу http://www.textpad.com/add-ons/cliplibs.html и загрузите файл csharp_l.zip с библиотекой фрагментов C#, которую


Окно определений программного кода

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Окно определений программного кода Если вы имеете опыт программирования в .NET 1.1, то должны знать об утилите Windows Forms Class Viewer, wincv.exe (утилита обзора классов Windows Forms). Этот инструмент позволяет задать имя .NET-типа и просмотреть его C#-определение. В версии .NET 2.0 утилиты wincv.exe уже


Интегрированная поддержка факторизации программного кода

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Интегрированная поддержка факторизации программного кода Одним из главных усовершенствований, предлагаемых в Visual Studio 2006, является встроенная поддержка факторизации программного кода. Говоря упрощенно, факторизация означает формальный "механический" процесс


Фрагменты программного кода и окружения

Из книги VBA для чайников автора Каммингс Стив

Фрагменты программного кода и окружения В Visual Studio 2005 (как и в Visual C# 2005 Express) предлагаются разнообразные возможности автоматического добавления сложных блоков программного кода C# с помощью выбора вариантов меню, контекстно-зависимых щелчков кнопкой мыши и/или комбинаций


Разделы программного кода

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Разделы программного кода Возможно, одной из самых полезных директив препроцессора являются #region и #endregion. Используя эти признаки, вы указываете блок программного кода, который можно скрыть от просмотра и идентифицировать информирующим текстовым маркером. Использование


Модель программного кода Web-страницы ASP.NET

Из книги автора

Модель программного кода Web-страницы ASP.NET Web-страницы ASP.NET могут строиться с использованием одного из двух подходов. Вы можете создать один файл *.aspx, который будет содержать комбинацию программного кода сервера и HTML (по примеру классической технологии ASP). Для создания


Разработка программного кода

Из книги автора

Разработка программного кода Объявите в разделе var переменную mouse типа TPoint. В этой переменой будут храниться координаты указателя мыши, при изменении которых программа должна закрываться:var Form1: TForm1;  mouse: TPoint;Программа экранной заставки должна закрываться не только по


Блоки программного кода

Из книги автора

Блоки программного кода Два и более операторов присваивания, а также вызовов процедур или функций можно выделять в блоки программного кода при помощи ключевых слов begin и end. Такие блоки используются в конструкции with-do, а также в рассматриваемых ниже циклических


Перенос имеющегося программного кода

Из книги автора

Перенос имеющегося программного кода Единая модель данных Windows призвана минимизировать объем возможных изменений исходного кода, но полностью избежать необходимости внесения изменений невозможно. Например, такие функции, как HeapCreate и HeapAlloc (глава 5), которые имеют дело


Вызов окна программного кода

Из книги автора

Вызов окна программного кода Для того чтобы открыть окно программного кода для существующего модуля, модуля класса или пользовательской формы, в редакторе Visual Basic предусмотрен целый ряд совершенно различных способов. Сначала нужно найти и выделить объект в окне


Печатание программного кода

Из книги автора

Печатание программного кода Окна программного кода в VBA являются, по сути, простыми текстовыми редакторами, правда, у них есть специальные возможности для создания и редактирования именно VBA-кода.Печатание VBA-операторов происходит точно так же, как и в обычном текстовом


Перемещение в окне программного кода

Из книги автора

Перемещение в окне программного кода В программном коде практически любой программы может оказаться немало строк, и тогда простое перелистывание текста программы в окне программного кода для поиска будет выглядеть слишком примитивным в таком элегантном окружении.


Разделение окна программного кода

Из книги автора

Разделение окна программного кода Любое окно программного кода можно разделить на два (рис. 5.14). Это позволит вам видеть одновременно различные части программного кода одного и того же модуля. В этом случае очень удобно также копировать текст из одной части программного


Созидательные возможности окна программного кода

Из книги автора

Созидательные возможности окна программного кода Зачем печатать программный код самим, если кто-то может напечатать его за вас? Редактор Visual Basic балует вас возможностью автоматического ввода совершенно непригодных для запоминания терминов VBA и как раз в самый


Обращение к окнам из программного кода

Из книги автора

Обращение к окнам из программного кода Прямо из программного кода проще всего обращаться к тому окну, в котором открыт редактируемый документ во время запуска процедуры. Для указания окна используется объект ActiveWindow.Для определения окна прямо в программном коде вам


Запуск нового программного кода

Из книги автора

Запуск нового программного кода Наконец, рассмотрим запуск на выполнение нового, отличного от родительского процесса программного кода, образ которого содержится в отдельном исполняемом файле в качестве дочернего процесса. Для этой цели в QNX существуют две группы