【发布时间】:2014-05-22 09:38:27
【问题描述】:
前几天我只是在查找责任链,我遇到了this 示例。
基本上有一个抽象处理程序,然后是具体的处理程序,每个处理程序都实现了父抽象处理程序的handle方法。实现是这样的,首先检查该特定处理程序是否可以处理当前请求,如果不能,则将请求传递给其后继者。
现在,我也可以使用简单的 if-else 条件块来做同样的事情。以上面链接中的第一个示例为例,我将如何更改它:
class SingleHandler
{
if(request > 0 && request <= 10)
{
// Process request
}
else if(request > 10 && request <= 20)
{
// Process request differently
}
else if(request > 20 && request <= 30)
{
// Process request differently
}
}
现在,我的问题是,两者之间的根本区别是什么?如果我可以使用 if-else 块提供完全相同的功能,我是否应该使用责任链?在性能、内存消耗、可维护性、可扩展性方面,哪一个更好?
【问题讨论】:
标签: design-patterns chain-of-responsibility