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

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

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

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

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

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

Тому структуру необхідно зробити модульної, організованою подібного поки що на рис 85

Рис 85 Організація модульного інтерфейсу та архітектура реалізації

На рис 85 окремі прямокутники представляють одну збірку NET Кожна збірка має специфічне призначення

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

• Збірка user – головне додаток, який взаємодіє з інтерфейсами обєктів, реалізованими У збірці Kernel АБО Implementations Збірка User є відповідальною за звязування разом всіх типів (наприклад, привласнюючи примірників інтерфейсів ІЗ збірки Implementations збірці Kernel)

• Збірка Kernel визначає основну функціональність програми і маніпірует екземплярами, що реалізують інтерфейси із збірки Definitions Ядро не знає, де знаходяться реалізації інтерфейсів, і очікує, що який-небудь інший блок коду володіє цією інформацією

• Збірка implementations містить реалізації інтерфейсів, якими маніпірует ядро Допускається одна або кілька збірок implementations Реалаціі знають ТІЛЬКИ ПРО збірці Definitions, АЛЕ НЕ ПРО збірці Kernel

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

*

*