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