我遇到过一种被称为"处理程序模式"的设计模式,但我无法在任何地方找到对这种模式的任何实际引用.它基本上只是一个单方法接口,允许您轻松扩展后端功能,而无需重新编译客户端.对于必须处理许多不同类型请求的Web服务可能很有用.这是一个例子:
public interface IHandler { IDictionaryHandle(IDictionary args); }
args通常包括一个像"Action"这样的键,其值可以告诉implmentation要做什么.可以传入额外的args以获取更多信息.然后,impl传回客户端"应该"理解的任意args列表.
这是一种反模式,还是伪装的另一种模式?这种设计是推荐的吗?
编辑:更多信息:我看到这个实现的方式,"根"处理程序将作为其他具体处理程序的调度程序(也许?).根处理程序有一个"HandlerResolver",它决定哪个具体的处理程序应该根据它的内容获取消息.也许它实际上就像一个"调度员"模式,虽然我不知道这是否真的是一种模式.我想它也可能在根目录中有一个责任链模式,允许你将一堆具体的处理程序链接在一起,然后让他们决定哪一个会处理它.
这是OOP方式对没有它们的语言进行闭包.它没有'模式'名称,因为在功能语言上它是显而易见的工作方式.在OOP语言,OTOH,你必须做一些工作,所以它似乎是一个可以说是成语.'汉德勒'听起来不错.
(它不是单身,BTW)