Lý lịch
Tôi có một dự án phụ thuộc vào việc sử dụng một loại thiết bị phần cứng nhất định, trong khi thực sự không quan trọng ai là người tạo ra thiết bị phần cứng đó miễn là nó làm những gì tôi cần. Với điều đó đã được nói, thậm chí hai thiết bị được cho là làm điều tương tự sẽ có sự khác biệt khi chúng không được sản xuất bởi cùng một nhà sản xuất. Vì vậy, tôi đang suy nghĩ sử dụng một giao diện để tách ứng dụng khỏi kiểu dáng / kiểu thiết bị cụ thể có liên quan và thay vào đó, giao diện chỉ bao gồm các chức năng cấp cao nhất. Đây là những gì tôi nghĩ kiến trúc của tôi sẽ như thế nào:
- Xác định một giao diện trong một dự án C #
IDevice
. - Có một cụ thể trong một thư viện được xác định trong một dự án C # khác, sẽ được sử dụng để đại diện cho thiết bị.
- Có thiết bị cụ thể thực hiện
IDevice
giao diện. - Các
IDevice
giao diện có thể có các phương pháp nhưGetMeasurement
haySetRange
. - Làm cho ứng dụng có kiến thức về bê tông và truyền cụ thể vào mã ứng dụng sử dụng ( không thực hiện )
IDevice
thiết bị.
Tôi khá chắc chắn rằng đây là cách phù hợp để thực hiện, bởi vì sau đó tôi sẽ có thể thay đổi thiết bị nào đang được sử dụng mà không ảnh hưởng đến ứng dụng (đôi khi dường như xảy ra). Nói cách khác, việc triển khai GetMeasurement
hoặc SetRange
thực sự hoạt động thông qua cụ thể như thế nào (có thể khác nhau giữa các nhà sản xuất thiết bị).
Nghi ngờ duy nhất trong đầu tôi là bây giờ cả ứng dụng và lớp cụ thể của thiết bị đều phụ thuộc vào thư viện chứa IDevice
giao diện. Nhưng, đó có phải là một điều xấu?
Tôi cũng không thấy ứng dụng sẽ không cần biết về thiết bị, trừ khi thiết bị và IDevice
ở trong cùng một không gian tên.
Câu hỏi
Điều này có vẻ như là cách tiếp cận phù hợp để thực hiện giao diện để tách rời sự phụ thuộc giữa ứng dụng của tôi và thiết bị mà nó sử dụng?