Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Анализ программного кода делегирования
Анализ программного кода делегирования
Предложенный выше метод 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.
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Глава 5 Агрессивные формы кода и борьба с ними
- 2.5. Разработка технического задания на проведение детального анализа рынка при работе над инновационным проектом. Основ...
- 9.1. Проблема синтаксического анализа
- 2.12.2. Анализ усилительных каскадов в области малых времен
- Стиль написания исходного кода
- Глава 5. Разработка и анализ бизнес-планов в системе Project Expert
- 4.4.3.3. План-фактный анализ продаж
- Функция программного обеспечения
- Кросс-категориальный анализ
- Приложение Глава 33. ABC-анализ
- Анализ CIL-кода