双分派模式
约 196 字小于 1 分钟
概述
当带有参数的消息发送到对象时,结果行为由接收方中该方法的实现定义。有时,行为也必须由参数的类型决定。
实现此目的的一种方法是为 methods 参数创建多个 instanceof-checks。但是,这会产生维护问题。添加新类型时,我们还需要更改方法的实现并添加新的 instanceof-check。这违反了单一责任原则——一个类应该只有一个理由来改变。
而不是 instanceof-checks,更好的方法是对参数对象进行另一个虚拟调用。这样,可以轻松添加新功能,而无需修改现有实现(开闭原则)。