Visitor pattern
,因为球会“访问”每个点。 BallMovementVisitor
这个名字。解释为什么这是一个坏主意?答案 0 :(得分:0)
好坏是一种选择。
我个人不喜欢在这里使用访客模式的想法。
如果我们重新访问here中的访问者示例,则访问者模式只是基于方法重载来定向方法调用。
interface Visitor {
void visit(FOO foo);
void visit(BAR bar);
void visit(BAZ baz);
}
如果我们在您的示例中使用它,我发现的唯一方便的方法是根据不同的环境类型使用重载。即
您可以通过这种方式开展业务。但是相反地,存在一些明显的缺点。
在定义添加新环境类型的需求时,您需要在访问者接口/类中继续添加不同的重载方法。如果您从solid principles的角度看,那是在违反OCP [虽然这是一种选择,而不是教条。 :)]。