6

这里在业务层核心进行了大量重构,我需要一些帮助来选择/实现更好的设计模式和实现。

问题:

  1. 在ASP MVC,业务层上下文中,IObservable什么时候支配INotifyPropertyChanged
  2. 对于 genericObserableFactoryObject 的设计模式,哪一个是更好的实现
  3. 我真的很喜欢weakEventListener,因为内存泄漏的可能性较低, http: //msdn.microsoft.com/en-us/library/hh199438.aspx,这是否仅适用于线程和线程调度

我的尽职调查:我知道 INPC 是在属性级别,另一个是在概念对象级别,但是对于 LINQ,IObservable 似乎是选择。然而,嵌入任何对象的简单性和灵活性是诱人的。

所以,我只需要一些帮助来理解两者的设计意图/目的/动机,以及哪个是观察者模式工厂的最佳重用。

另外,知道任何地方,我都可以获得观察者工厂的代码片段

4

2 回答 2

4

MSDN 说的很清楚。

可观察的

和接口为基于推送的通知提供了一种通用机制IObserver<T>IObservable<T>也称为观察者设计模式。

INotifyPropertyChanged

INotifyPropertyChanged接口用于通知客户端(通常是绑定客户端)属性值已更改。

据我了解,INotifyPropertyChanged它是很久以前添加的(例如,它已在 WS 客户端中使用,后来它成为 WPF 绑定处理中最重要的接口)。

所以我假设答案是模糊而清晰的:如果你真的需要观察者模式,请使用IObservable.

于 2013-09-04T06:26:45.330 回答
4

据我所知,INPC 的主要用途是客户端视图数据绑定(即 WPF、Silverlight)。您绝对可以在不用于视图绑定的应用程序中使用 INPC,但是这里发生了一个笨重string的事情(PropetyName)。使用它的好处是整个对象只需要一个事件,并且在事件中指定属性名称(或者整个对象的空字符串应该被视为已更改)。或者,您可以XXXPropertyChanged为每个活动举办一个活动

IObservable<T>只是观察者模式的替代实现(即.NET 事件的替代)。您将公开一个IObservable<T>. OnNext您只需重视可观察序列,而不是引发事件。还具有通过或IObservable<T>具有序列终止概念的额外好处。所以在这种情况下,一个更好的问题是我应该使用 Events 还是. 要回答这个问题,我建议偏爱,除非目标受众/消费者不想关心学习 Rx。OnErrorOnCompletedIObservable<T>IObservable<T>

这是两者之间相当幼稚的区别,但是我在这里更多地扩展了这个概念http://introtorx.com/Content/v1.0.10621.0/01_WhyRx.html#WhyRx

于 2013-09-04T12:32:05.860 回答