c# - 观察者模式还是只是创建事件处理?

标签 c# design-patterns asp.net-mvc-2 oop

我想在我的网络应用程序中创建一个“模块”布局,以便我可以轻松添加更多相同类型的模块,例如:

举个例子,我的 WebApp 处理订阅和电子邮件事件,我想创建一个界面以允许轻松耦合多个 API、MailChimp、CampaignMonitor、iContact 等...

所以我将创建一个 IMailingService 接口(interface),在其中设置基本规则,所有模块都将像这样实现它

public class CampaignMonitorService : IMailingService

到目前为止一切顺利...

在我的网络应用程序上执行操作时触发接口(interface)方法怎么样?

我应该实现观察者设计模式,我应该简单地创建事件处理程序,还是任何其他 Hook ?

例如,在用户订阅后,我想在界面上触发AddSubscriber方法

AddSubscriber(string email, string[] args);

诸如创建列表、取消订阅等之类的事情......

处理这种情况的最佳方法是什么?

最佳答案

事件处理程序是观察者模式在 .NET 中通常实现的方式。该模式是 .NET 世界的一等公民,非常类似于迭代器模式的内置方式(使用 foreachyield return )。

如果您确实想使用没有事件/事件处理程序的模式,则可以使用新的 IObserver<T> IObservable<T> (在 .NET 4.0 中引入)。

关于c# - 观察者模式还是只是创建事件处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889051/

相关文章:

c# - 替换C#中的第一个逗号

c# - 使用 Enterprise Library 5 进行数据库记录

c# - Web应用程序允许用户选择用作构建 block 的对象?

java - 何时使用嵌套类

asp.net - 如何在线程内生成 ActionLink

c# - Azure Web服务自动添加NODE_OPTIONS环境变量导致jsreport抛出JsReportBinaryException

c# - 使用 Lambda 表达式进行 try without catch 是一种不好的做法吗?

c# - 我怎样才能用 C# 类解决这个问题?

validation - ASP.NET MVC 2 : Model Validation - username already taken?

asp.net - .NET MVC2 Master 上的多个部分 View ,也可通过 AJAX 单独加载