Фон
У мене є проект, який залежить від використання певного типу апаратного пристрою, хоча це неважливо, хто робить цей апаратний пристрій до тих пір, поки він робить те, що мені потрібно для цього. Зважаючи на це, навіть два пристрої, які повинні робити те саме, матимуть відмінності, коли вони не будуть виготовлені тим самим виробником. Тому я думаю використовувати інтерфейс, щоб від'єднати додаток від конкретної марки / моделі пристрою, а замість цього інтерфейс просто покриває функціональність найвищого рівня. Ось як я думаю, як виглядатиме моя архітектура:
- Визначте інтерфейс в одному проекті C #
IDevice
. - Майте конкретику в бібліотеці, визначеній в іншому проекті C #, який буде використовуватися для представлення пристрою.
- Попросіть конкретний пристрій реалізувати
IDevice
інтерфейс. IDevice
Інтерфейс може мати такі методи , якGetMeasurement
абоSetRange
.- Зробіть, щоб у додатку були знання про бетон, і передайте бетон до коду програми, який використовує ( не реалізує )
IDevice
пристрій.
Я майже впевнений, що це правильний шлях для цього, оскільки тоді я зможу змінити, який пристрій використовується, не впливаючи на додаток (що, здається, трапляється іноді). Іншими словами, не має значення, як реалізація GetMeasurement
або SetRange
насправді працює через бетон (як це може відрізнятися у виробників пристрою).
Єдиний сумнів у моєму розумінні - це те, що зараз і додаток, і конкретний клас пристрою залежать від бібліотеки, яка містить IDevice
інтерфейс. Але хіба це погано?
Я також не бачу, як програмі не потрібно буде знати про пристрій, якщо пристрій IDevice
не знаходиться в одному просторі імен.
Питання
Чи здається це правильним підходом до реалізації інтерфейсу для усунення залежності між моїм додатком та пристроєм, який він використовує?