Иллюстрированный самоучитель по Architecture .NET

Логика базовых классов

Базовый класс Broker (Брокер) не только является абстрактным брокером, который резервирует объекты, но также содержит общую логику регистрации резервирований и список резервирований. Если реализовать эту логику в абстрактном (базовом) классе, то это сделает его еще более полезным, так как значительно упростит реализацию резервирования в производных классах.

Метод Reserve (Резерв)

Основным методом класса Broker (Брокер) является метод Reserve (Резерв).

ReservationResult *Reserve(Reservation *res) // Резервирование
{
int unitid = res › Unit!d;
DateTime dt = res › Date; // Дата
int numDays = res › NumberDays;
ReservationResult *result = new ReservationResult;
// Проверить, находятся ли даты
// в пределах поддерживаемого диапазона
int day = dt.DayOfYear -1;
if (day + numDays > MaxDay) // если (день + numDays> MaxDay)
{
result › ReservationId = -1; // результат
result › Comment = "Dates out of range";
// результат › Комментарий = "Даты вне диапазона";
return result; // результат }
// Проверить, доступны ли комнаты для всех дат
for (int i = day; i < day + numDays; i++)
{
if (numCust[i, unitid] >= units[unitid] › capacity)
// вместимость
{
result › Reservation!d = -1; // результат
result › Coiranent = "Room not available";
// результат › Комментарий = "Комната не доступна";
return result; // результат
}
}
// Резервировать комнату для требуемых дат
for (int i = day; i < day + numDays; i++) n
umCust[i, unitid] += 1;
// Добавить резервирование (Add reservation)
// к списку резервирования,
// возвратить результат
AddReservation(res);
result › ReservationId = res › ReservationId; // результат
result › ReservationCost = // результат
units[unitid] › cost * numDays; // стоимость
result › Rate = units[unitid] › cost; // результат = стоимость;
result › Comment = "OK"; // результата Комментарий = "хорошо";
return result;
}

Метод Reserve (Резерв) разработан так, чтобы с его помощью можно было зарезервировать разные типы резервируемых объектов. Таким образом, объект Reservation (Резервирование), который хранится в списке резервируемых объектов, создается в классе, производном от Broker (Брокер), и передается в метод Reserve (Резерв) в качестве параметра. Например, объект HotelBroker резервирует объект HotelReservation и т.д.

Потом создается объект ReservationResult, который и будет возвращен (поля Unitid, Date (Дата) и NumberDays наследуются из базового класса Reservation (Резервирование)).

ReservationResult *Reserve(Reservation *res) // Резервирование
{
int unitid = res › UnitId;
DateTime dt = res › Date; // Дата
int numDays = res › NumberDays;
ReservationResult *result = new ReservationResult;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.