前几天我只是在查找责任链,我遇到了这个例子。
基本上,有一个抽象处理程序,然后是具体处理程序,每个处理程序都实现了父抽象处理程序的句柄方法。实现是这样的,首先检查此特定处理程序是否可以处理当前请求,如果不能,则将请求传递给其后继者。
现在,我也可以使用一个简单的 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 块提供完全相同的功能,我是否应该使用责任链?哪一个在性能、内存消耗、可维护性和可扩展性方面更好?