Виконання операцій з групою програми управління освітленням в Visual C # (Sharp)

З певною угрупованням можна виконувати глобальні операції, воздейс на всі кімнати в угрупованні Одним із прикладів таких операцій може бути виключення освітлення у всіх кімнатах угруповання, заснованої на екзеляре інтерфейсу iRoom Відповідний код може виглядати таким чином:

public void TurnOffLights(object grouping) { foreach (IRoom room in Roomlterator(grouping)) {

IRemotecontrolRoom remote = room as IRemotecontrolRoom

ISensorRoom sensorRoom = room as ISensorRoom if (sensorRoom = null) {

if (sensorRoomIsPersonlnRoom) { continue

}

}

else if (remote = null) { remoteLightSwitch(false)

}

&gt&nbsp

}

Зверніть увагу на те, що дескриптор НЕ перетворюється в екземпляр RoomGrouping Дескриптор передається методу Roomlterator о, який подібно методу RoomGroupingiterator використовує ключове слово yield, щоб дозволити методу TurnoffLights () використовувати оператор foreach для обробки в циклі окремих кімнат

ПРИМІТКА

Комбінація конструкції yiel d return і ключового слова foreach є моим і легкі м способо м дл я послідовної обробки колекції даних Достнством конструкції yiel d return є те, що Оброблюваність е данни е не обовязково повинн и бути в циклі або колекції Вони можуть бути згенеровані з допомогу ю алгоритму або мати фіксоване число елементів

Для кожної ітерації циклу foreach кімната примірника IRoom приводиться до типам iRemoteControlRoom і isensorRoom Приведення до цих двох типів необхідно тому, що, залежно від типу кімнати, потрібно виконувати різні алгоритми Наприклад, ДЛЯ кімнат типу ISensorRoom СО значенням властивості IsPersonlnRoom, рівним true, освітлення треба залишити включеним Якщо освітлення потрібно оавіть в його поточному стані, то необхідно виконати наступну ітерацію за допомогою ключового слова continue

Якщо обробка продовжується, виконується перевірка, чи може освітлення даної кімнати управлятися віддалено, що має на увазі реалізацію інтерфейсу IRemoteControlRoom Якщо значення змінної remote НЕ одно null, то визивтся метод Lightswitch (), якому передається параметр false, щоб вимкнути освітлення Таким чином, в циклі обробляються всі кімнати угруповання

На цьому розробка ядра завершена, але перш ніж приступити до розгляду його застосування в додатку управління освітленням, я б хотів обговорити альтернівний підхід до реалізації ядра

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*