Để trả lời câu hỏi, Có, mỗi chế độ xem nên có Mô hình Chế độ xem riêng. Nhưng không cần phải mô hình hóa toàn bộ hệ thống phân cấp. Chỉ những gì xem cần.
Vấn đề tôi gặp phải với hầu hết các tài nguyên trực tuyến liên quan đến MVVM:
Trong hầu hết các ví dụ, Chế độ xem gần như là ánh xạ 1 đến 1 của Mô hình. Nhưng trong kịch bản của tôi, nơi có các chế độ xem khác nhau cho các khía cạnh khác nhau của cùng một Mô hình, tôi thấy mình bị mắc kẹt giữa hai lựa chọn:
Một mô hình khung nhìn nguyên khối được sử dụng bởi tất cả các mô hình khung nhìn khác
Hoặc một mô hình xem cho mỗi chế độ xem
Nhưng cả hai đều không lý tưởng.
Mô hình Chế độ xem theo định hướng Mô hình (MVM), trong khi sao chép mã thấp, là một cơn ác mộng để duy trì
Mô hình khung nhìn theo hướng xem (VVM) tạo ra các lớp chuyên biệt cao cho mỗi khung nhìn, nhưng chứa các bản sao.
Cuối cùng, tôi đã quyết định rằng có một VM cho mỗi View dễ bảo trì và mã hóa hơn, vì vậy tôi đã sử dụng phương pháp VVM.
Khi mã đang hoạt động, tôi bắt đầu tái cấu trúc tất cả các thuộc tính và hoạt động chung thành dạng hiện tại, cuối cùng của nó:
Trong dạng cuối cùng này, lớp mô hình khung nhìn chung được tạo thành trong mỗi VVM.
Tất nhiên, tôi vẫn phải quyết định những gì được coi là phổ biến / chuyên ngành. Và khi một khung nhìn được thêm / sáp nhập / xóa, số dư này sẽ thay đổi.
Nhưng điều tuyệt vời ở đây là, bây giờ tôi có thể đẩy các thành viên từ phổ biến lên VVM và ngược lại một cách dễ dàng.
Và một lưu ý nhanh liên quan đến việc giữ các đối tượng không đồng bộ:
Có một mô hình xem chung sẽ chăm sóc hầu hết điều này. Mỗi VVM có thể chỉ cần có một tham chiếu đến cùng một Mô hình khung nhìn chung.
Tôi cũng có xu hướng bắt đầu với các phương thức gọi lại đơn giản và phát triển thành sự kiện / người quan sát nếu cần nhiều người nghe phát sinh.
Và đối với các sự kiện thực sự phức tạp (ví dụ: cập nhật xếp tầng bất ngờ), tôi sẽ chuyển sang sử dụng Người hòa giải.
Tôi không né tránh mã nơi một đứa trẻ có tài liệu tham khảo lại cho cha mẹ của nó. Bất cứ điều gì để có được mã làm việc.
Và nếu có cơ hội tái cấu trúc, tôi sẽ nắm lấy nó.
Những bài học tôi học được:
- Xấu xí / Mã làm việc> Đẹp / Mã không hoạt động
- Dễ dàng hợp nhất nhiều lớp nhỏ hơn là chia nhỏ một lớp lớn