2011-10-20 26 views
8

Tôi muốn biết khi nào sử dụng Prism, Đối tượng yêu cầu tương tác thích hợp hơn khi sử dụng mẫu Dịch vụ tương tác. Đối với tôi, Dịch vụ tương tác nên được sử dụng trong các trường hợp đơn giản, tức là khi bạn có cửa sổ bật lên thông báo chuẩn và chỉ nội dung văn bản mới được thay đổi. Mặt khác, các đối tượng yêu cầu tương tác là phù hợp hơn khi giao diện người dùng phức tạp hơn. Nhưng Dịch vụ tương tác dễ thực hiện hơn nhiều và yêu cầu ít mã hơn. Bạn nghĩ sao?Dịch vụ tương tác và đối tượng yêu cầu tương tác

+0

Tôi có cùng một câu hỏi. Bất kỳ ai... – dFlat

Trả lời

1

Tôi đồng ý với bạn rằng một dịch vụ tương tác có thể phù hợp cho hành vi tương tác thông thường như MessageBoxes, vv

Theo tôi, nó nắm tới trách nhiệm lớp. Nói cách khác, bạn có muốn ViewModel hoặc View có trách nhiệm xác định loại tương tác nào sẽ diễn ra không?

Xem xét một giao diện dịch vụ tương tác cơ bản:

public interface IInteractionService{ 
    MessageBoxResult ShowMessageBox(string messageBoxText, string caption, MessageBoxButton button); 
} 

Đó là khá rõ ràng việc thực hiện các giao diện kiểu hành vi ShowMessageBox đang xảy ra để sản xuất. Điều này cho phép ViewModel một số mức độ kiểm soát về việc xác định loại hành vi tương tác nào mà nó mong đợi xảy ra. Vấn đề với cách tiếp cận này là ViewModel của bạn bây giờ có một sự phụ thuộc vào IInteractionService cũng như được rõ ràng trong các kỳ vọng hành vi tương tác của nó. Điều này có thể làm cho ViewModel của bạn ít sử dụng lại được.

Với Đối tượng tương tác, bạn có thể đặt thêm trách nhiệm về hành vi tương tác trên Chế độ xem. Nói cách khác, bạn có thể thay đổi hành vi và giao diện của tương tác mà không ảnh hưởng trực tiếp đến ViewModel. Ví dụ, V1 của yêu cầu tương tác có thể hiển thị một MessageBox đơn giản. V2 của yêu cầu tương tác có thể là một hộp thoại phức tạp hơn đòi hỏi nhiều tương tác của người dùng hơn chỉ với một cú nhấp chuột đơn giản. Kiểu thay đổi hành vi tương tác này có thể được quản lý mà không cần phải sửa đổi ViewModel. Điều này có thể hữu ích nếu bạn có một nhà thiết kế giao diện người dùng làm việc trên dự án muốn tùy chọn trao đổi hoặc thay đổi hành vi hoặc giao diện của chế độ xem được gắn với yêu cầu tương tác.

Bạn có thể sử dụng cả hai chiến lược nếu bạn muốn. Nói cách khác, một dịch vụ tương tác cho các hành vi tương tác chung và các đối tượng tương tác cho hành vi phức tạp hơn.

Để tóm tắt, các dịch vụ tương tác có thể dễ sử dụng hơn nhưng đối tượng tương tác có thể làm cho ViewModels của bạn có thể sử dụng lại nhiều hơn, theo ý kiến ​​của tôi.

2

Hạn chế lớn của việc sử dụng dịch vụ tương tác để hiển thị hộp thông báo là cửa sổ chính - hay đúng hơn là thiếu một.

Bạn nên cung cấp cửa sổ nào làm cha mẹ của hộp thư, từ mô hình chế độ xem hoặc triển khai dịch vụ? Nếu bạn chọn Application.Mainwindow, bạn đang tạo ra một giả định rất lớn về bố cục ứng dụng tổng thể.

Thực thể duy nhất trong quá trình biết cách để hiển thị tương tác là chế độ xem. Cho dù đó là sử dụng một hộp thông báo hoặc lớp phủ trong trang.

Có vài đối số hợp lệ có lợi nếu sử dụng dịch vụ tương tác. Cái thường được sử dụng là nó dễ dàng hơn. Điều này có thể đúng, nhưng cũng đúng với nhiều thứ khác không nên làm, ví dụ: mã phía sau, v.v.

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