Tôi đang xây dựng một ứng dụng WPF bằng cách sử dụng mẫu MVVM. Ngay bây giờ, viewmodels của tôi gọi lớp dịch vụ để lấy các mô hình (làm thế nào không liên quan đến viewmodel) và chuyển đổi chúng thành viewmodels. Tôi đang sử dụng phương thức tiêm constructor để truyền dịch vụ cần thiết cho viewmodel.
Nó dễ dàng kiểm tra và hoạt động tốt đối với các chế độ xem với một vài phụ thuộc, nhưng ngay khi tôi cố gắng tạo viewModels cho các mô hình phức tạp, tôi có một hàm tạo với rất nhiều dịch vụ được đưa vào (một để lấy từng phụ thuộc và một danh sách tất cả các giá trị có sẵn để liên kết với một mụcSource chẳng hạn). Tôi đang tự hỏi làm thế nào để xử lý nhiều dịch vụ như vậy mà vẫn có chế độ xem mà tôi có thể kiểm tra đơn vị một cách dễ dàng.
Tôi đang nghĩ về một vài giải pháp:
Tạo một dịch vụ đơn (IService) chứa tất cả các dịch vụ có sẵn dưới dạng giao diện. Ví dụ: Services.C Hiện tại.XXXService.Retrieve (), Services.C Hiện.YYYService.Retrieve (). Theo cách đó, tôi không có một nhà xây dựng lớn với hàng tấn thông số dịch vụ trong đó.
Tạo mặt tiền cho các dịch vụ được sử dụng bởi viewModel và truyền đối tượng này vào ctor của viewmodel của tôi. Nhưng sau đó, tôi sẽ phải tạo một mặt tiền cho mỗi chế độ xem phức tạp của mình và có thể hơi ...
Bạn nghĩ gì là cách "đúng" để thực hiện loại kiến trúc này?
new
để tạo các mô hình xem khác, nhưng hãy nghĩ về một thứ đơn giản như ứng dụng MDI khi nhấp vào nút hoặc menu "tài liệu mới" sẽ thêm một tab mới hoặc mở một cửa sổ mới. Vỏ / dây dẫn phải có khả năng tạo ra các phiên bản mới của một thứ gì đó , ngay cả khi nó bị ẩn đằng sau một hoặc một vài lớp cảm ứng.