Створення повного програми управління освітленням в Visual C # (Sharp)

Весь код, розглянутий на даний момент, має відношення до ядра, і може здатися, що додаток готове Але насправді, ядро ​​не робить нічого іншого, крім як організовує і маніпулює кімнатами У ядрі не визначена жодна реалізація для конкретної кімнати Тому розглянемо, як можна визначити кімнати і використовувати їх з ядром

Ідея полягає в тому, щоб дозволити розробнику додавати функціоналом до ядра, не зачіпаючи саме ядро Для прикладу розглянемо визначення двох кімнат у музеї (у проекті Museum)

ПРИМІТКА

Реалізація проекту ноті в даній книзі не розглядається, але включена в исхо код книги, який можна завантажити через Інтернет

Визначення кімнат виконуються в окремій збірці, яка називається Museum, і не є частиною ядра Далі наводиться приклад коду реалізації кімнати Не забудьте вставити посилання на LibLightingSystem (Клацніть правою кнопкою по пункту References в проекті Museum і виберіть послідовність команд Add Reference | Projects | LibLightingSystem)

using LibLightingSystem namespace Museum

{

class PrivateRoom : INoRemoteControlRoom {

}

class PublicRoom : ISensorRoom { public bool IsPersonlnRoom {

get { return false }

}

double _lightLevel

public double LightLevel { get { return _lightLevel }

}

public void LightSwitch(bool lightState) { if (lightState) {

_lightLevel = 10

}

else {

_lightLevel = 00

}

&gt&nbsp

public void DimLight(double level) {

_lightLevel = level

}

}

}

Область видимості обох визначень кімнат, PrivateRoom і PublicRoom, ограновані складанням Для кожної кімнати реалізується необхідний для неї інтерфейс Для кімнати PrivateRoom реалізується інтерфейс iNoRemoteControlRoom Це означає, що LightingController не керує освітленням в даній кімнаті

Для кімнати PublicRoom реалізується інтерфейс isensorRoom Це означає, що дана кімната буде повідомляти контролеру, коли в ній знаходяться люди, і позвяет йому контролювати освітлення в ній Реалізація класу PublicRoom трівльна і, чесно кажучи, не дуже корисна, але вона ілюструє реалізацію абсютного мінімуму необхідних можливостей У реальному житті клас PublicRoom мав би доступ, принаймні, до таких зовнішніх пристроїв, як датчик теератури і керуючі елементи освітлення Клас PublicRoom відправляє і Пучай сигнали від LightingController і виконує дії У коло ответствеостей класу PublicRoom не входить цікавитися, чи правильно дане рішення контролера чи ні Наприклад, якщо контролер вказує вимкнути освітлення, хоча в кімнаті знаходяться люди, клас PublicRoom НЕ доповідатиме про це контролеру, а просто виконає його вказівку

ПРИМІТКА

При розробці додатків архітектури ядра реалізації є втіленням та ідей і ніколи не повинн и сумніватися в правильності вказівок контролера Реалаціі можуть не знати повної картини, і якщо вони почнуть сумніватися в правильності рішень контролера, то це може викликати збій у роботі алгоритму Звичайно ж, до цього правилу є виняток – якщо рішення контролера може заподіяти фические пошкодження або викликати збій програми У такому випадку реалізація повинн а видати виняток, вказуючи на неправильність рішення контролера

Джерело: Гросс К С # 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>

*

*