5

Khi bắt đầu một ứng dụng mvvm-wpf mới, tôi thường bao gồm ánh sáng mvvm ngay khi bắt đầu. Điều đó hoạt động tốt, cho đến khi ứng dụng của tôi phát triển.ViewModelLocator chuẩn từ MvvmLight là một AntiPattern? Và làm thế nào để giảm thiểu điều đó?

Một số nơi dọc theo dòng ViewModelLocator trở nên rất lớn (nhiều Chế độ xem cho tất cả các loại ChildViewodels). Và thậm chí sâu hơn nữa vào lỗ thỏ tôi cần nhiều trường hợp riêng biệt của cùng một mô hình. (ví dụ như đối với một danh sách các mục, mà một trong những mục muốn tương tác trên cùng một màn hình). Đây là nơi mà cuộc đấu tranh bắt đầu, làm thế nào để xử lý tốt đẹp, liên tục vi giữ mã có thể kiểm tra? Vì vậy, nếu tôi muốn loại bỏ ViewModelLocator (có phải là một antipattern? Cảm thấy giống như ServiceLocator), tôi có nên chuyển sang ViewModel trước và tạo (nhiều) nhà máy trừu tượng cho tất cả các Chế độ xem không?

Trả lời

0

ViewModelLocator là một tên lạ mắt cho một Bus điều hướng được sử dụng cho Inversion of Control (IoC). Mặc dù điều này dường như là một công nghệ mới hơn, một chiếc xe buýt điều hướng thực sự đang sử dụng một Service Bus theo một cách khác. Nó không phải là chống mẫu nếu bạn có một thùng chứa tĩnh (được chia sẻ trong VB). Các anti-pattern đi vào nếu bạn đang đi qua các container xung quanh trong ViewModels của bạn.

Điều cần lưu ý trong MVVM là nó là mẫu thiết kế linh hoạt và bạn có thể mở rộng theo nhiều cách. Giải pháp tốt nhất cho các dự án lớn là thiết kế thành phần (một thiết kế mà mỗi tính năng của ứng dụng của bạn nằm trong không gian tên hoặc dự án riêng của nó).

Một sơ đồ thiết kế có thể trông giống như vậy:

  • khách hàng
    • Models
    • ViewModels
    • Dịch vụ
  • Orders
      .210
    • Models
    • ViewModels
    • Dịch vụ

vv ... Nó thực sự đi xuống đến hương vị của các nhà phát triển. Miễn là thiết kế của bạn là phù hợp.

Đọc thêm: Để hiểu rõ hơn về tìm kiếm ViewModelLocator cho Bus điều hướng. Để hiểu rõ hơn EventAggregator, hãy tìm kiếm Xe buýt thông báo

Các vấn đề liên quan