首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Handler“模式?

"Handler“模式?
EN

Stack Overflow用户
提问于 2009-03-13 04:06:49
回答 6查看 25.9K关注 0票数 15

我遇到过一种被称为“处理程序模式”的设计模式,但我在任何地方都找不到对此模式的任何实际引用。它基本上只是一个方法接口,允许您轻松地在后端扩展功能,而不需要客户端重新编译。对于必须处理许多不同类型的请求的web服务来说可能是有用的。下面是一个例子:

代码语言:javascript
复制
public interface IHandler
{
    IDictionary<string, string> Handle(IDictionary<string, string> args);
}

args通常包含一个类似于"Action“的键,该键的值告诉实现要做什么。可以传入额外的参数,为impl提供更多信息。然后,impl传回客户端“应该”理解的任意参数列表。

这是一种反模式,还是另一种伪装的模式?是否推荐这种类型的设计?

编辑:更多信息:根据我所见的实现方式,“根”处理程序将充当其他具体处理程序的分派器(也许?)。根处理程序有一个"HandlerResolver“,它根据消息的内容决定哪个具体处理程序应该获取消息。也许它实际上类似于"dispatcher“模式,尽管我也不知道这是否真的是一种模式。我猜它还可以在根中有一个责任链模式,它允许您将一堆具体的处理程序链接在一起,然后让它们决定哪个处理程序来处理它。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-03-13 04:36:33

这是在没有闭包的语言上做闭包的OOP方法。它没有一个“模式”的名字,因为在函数式语言中,它是显而易见的工作方式。在OOP语言中,OTOH,你必须做一些工作,所以它看起来是一个可以命名的习语。“‘Handler”听起来不错。

(它不是单例,BTW)

票数 9
EN

Stack Overflow用户

发布于 2009-03-13 04:20:58

我以"SingletonRegistry“的名字使用它

请参阅this thread

我已经用过几次了。特别是当要采取的操作是未知的(在设计的第一阶段),或者应用程序应该支持极端的灵活性时。

我从文件或数据库加载字典,并创建类的一个实例,该实例将在某个“键”下处理请求。

我在网上搜索这个名字的时候发现了这个class also

看起来不是一样的吗?

票数 2
EN

Stack Overflow用户

发布于 2009-03-13 04:26:56

因为您的帖子中有"Action“一词,所以我相信这可能是Command模式的一部分。查看Wiki并搜索"Handler"...也许这会让你有更多的洞察力。

http://en.wikipedia.org/wiki/Command_pattern

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/641426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档