5

Tái bao thanh toán lớn ở lõi lớp kinh doanh tại đây và tôi cần một số trợ giúp với việc chọn/triển khai mẫu thiết kế tốt hơn và triển khai.INotifyPropertyChanged vs IObservable - RxExtensions, cái nào cho mẫu quan sát

Câu hỏi:

  1. trong ASP MVC, lớp kinh doanh bối cảnh, khi nào IObservable thống trị INotifyPropertyChanged
  2. Cái nào là thực hiện tốt hơn cho các mẫu thiết kế cho một genericObserableFactoryObject
  3. Tôi thực sự thích weakEventListener vì đầu dò thấp hơn trên rò rỉ bộ nhớ, http://msdn.microsoft.com/en-us/library/hh199438.aspx, điều này chỉ áp dụng cho các chủ đề và gửi đi luồng

Sự thẩm định của tôi: Tôi hiểu INPC đang ở cấp độ thuộc tính và khác là ở cấp độ đối tượng khái niệm, nhưng với LINQ có vẻ như IObservable có thể là sự lựa chọn. Tuy nhiên, sự đơn giản và linh hoạt để nhúng bên trong bất kỳ đối tượng nào là hấp dẫn.

Vì vậy, tôi chỉ cần một số trợ giúp trong việc hiểu rõ mục đích/mục đích/động cơ thiết kế của cả hai và cách nào là tái sử dụng tốt nhất cho nhà máy sản xuất mẫu quan sát.

Ngoài ra, biết bất cứ nơi nào, tôi có thể lấy đoạn mã cho các nhà máy quan sát

+0

Ý anh là gì bởi ObserableFactoryObject và những gì bạn đang cố gắng để đạt được? Biết rằng sẽ dễ trả lời hơn. – mikalai

Trả lời

4

Theo như tôi biết, cách sử dụng chính của INPC là để ràng buộc dữ liệu chế độ xem khách hàng (ví dụ: WPF, Silverlight). Bạn chắc chắn có thể sử dụng INPC trong các ứng dụng không dành cho ràng buộc xem, nhưng bạn có một điều 1.clunky (PropetyName) xảy ra ở đây. Nhược điểm của việc sử dụng đó là bạn chỉ cần một sự kiện cho toàn bộ đối tượng và tên thuộc tính được chỉ định trong sự kiện (hoặc chuỗi rỗng cho toàn bộ đối tượng cần được xem xét thay đổi). Hoặc bạn có thể có sự kiện XXXPropertyChanged cho mỗi sự kiện

IObservable<T> chỉ là triển khai thay thế của mẫu Observer (ví dụ: sự kiện thay thế cho sự kiện .NET).Thay vì để lộ một sự kiện từ lớp học của bạn, bạn sẽ phơi bày một số IObservable<T>. Thay vì tăng sự kiện, bạn chỉ cần OnNext giá trị cho chuỗi có thể quan sát được. IObservable<T> cũng có các lợi ích bổ sung khi có khái niệm về việc chấm dứt chuỗi qua OnError hoặc OnCompleted. Vì vậy, trong trường hợp này, một câu hỏi hay hơn là tôi nên sử dụng Sự kiện hoặc IObservable<T>. Để trả lời câu hỏi này, tôi sẽ đề nghị ưu tiên IObservable<T> trừ khi đối tượng mục tiêu/người tiêu dùng không muốn quan tâm đến việc học Rx.

Đó là một sự khác biệt khá ngây thơ giữa hai, tuy nhiên tôi mở rộng khái niệm ở đây hơn http://introtorx.com/Content/v1.0.10621.0/01_WhyRx.html#WhyRx

3

MSDN nói khá rõ ràng.

IObservable

Các IObserver<T>IObservable<T> giao diện cung cấp một cơ chế tổng quát để thông báo Push, còn được gọi là các mẫu thiết kế quan sát.

INotifyPropertyChanged

Giao diện INotifyPropertyChanged được sử dụng để thông báo cho khách hàng, thường ràng buộc khách hàng, đó là một giá trị tài sản đã thay đổi.

Theo tôi hiểu, INotifyPropertyChanged đã được thêm từ lâu (ví dụ, nó đã được sử dụng trong các máy khách WS và sau đó là giao diện quan trọng nhất trong xử lý ràng buộc WPF).

Vì vậy, tôi cho rằng câu trả lời là mờ và rõ ràng: nếu bạn thực sự cần mẫu quan sát viên, hãy sử dụng IObservable.