什么是多路分发
比如要执行一个通用的数学计算,计算表达式可能是a.plus(b),但是不知道a和b的具体类型,如果按照普通的做法,需要对a和b做两次类型判断,这种写法不够优雅。...好的解决办法就是使用多路分发,一共5种方式,最优方案在最后,下面看一个“石头剪子布”的示例。...,返回传入参数的比较结果
return it.eval(this);
}
@Override
public Outcome eval(Paper p) {...initRow(PAPER, DRAW, LOSE, WIN);
initRow(SCISSORS, WIN, DRAW, LOSE);
initRow..., LOSE, WIN},
{WIN, DRAW, LOSE},
{LOSE, WIN, DRAW}
};
/**
*