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