|
|
1
6
通常,语言中内置的事件模型对于观察者模式是足够的。实际上没有理由用不同的方式实现它,因为您只是在重新创建事件。 也就是说,很少有人改变“标准”事件模式。例如,我看到过一些情况,人们希望异步引发事件。我通常不建议这样做(我个人认为在订户方面处理得更好),但它仍然可以通过标准的C事件来处理,但会稍微增加事件的变化(使用getInvocationList并异步调用委托)。 |
|
|
2
3
你说得对。观察者模式通过委托在C事件系统中实现。 您希望使用更接近经典观察器的1原因甚至是聚合以促进域事件和/或复合应用程序体系结构。 Jeremy Miller在事件聚合器上有一个很好的帖子: http://codebetter.com/blogs/jeremy.miller/archive/2009/07/21/braindump-on-the-event-aggregator-pattern.aspx 我用他的帖子创建了我的事件聚合器,我把它放到了我的WinForms/手持应用程序基于消息的架构中: http://www.lostechies.com/blogs/derickbailey/archive/2009/12/22/understanding-the-application-controller-through-object-messaging-patterns.aspx |
|
|
3
2
我认为一般来说,我们不应该使用C委托模型来实现观察者模式没有真正的原因。但是,在.NET 4中,他们补充说
|
|
|
4
1
我同意.NET的事件处理程序可以满足您对观察者模式的大部分需求。但是,您需要注意一些接口,特别是对于Silverlight和WPF。这些是不完整的属性更改和不完整的集合更改。这些规定了Silverlight和WPF对数据绑定所期望的特定模式。此外,还有一个ObservableCollection类实现了inotifyCollectionChanged;这在构建Silverlight和WPF接口时节省了大量的麻烦。 |
|
|
5
0
我同意经典的观察者设计模式在C中被大大简化。我认为有可能存在一些使用经典实现“更安全”的情况。想到的是多线程和公共API。我认为,如果采用经典的方法,单元测试有时会更容易。但是,正如您提到的,现在有一个更简单的快捷方式与C代表。对不起,我没有一个明确的答案,你什么时候必须使用经典模式。 |
|
|
6
0
我想看看这篇文章: 我特别喜欢乔恩·斯基特的一句话:
这是对这句老话的回应:
但所选的答案是相当好的和适用的。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |