应该重用访客是静态的吗?

时间:2013-04-01 14:31:42

标签: java design-patterns gwt visitor-pattern

我正在写一个Canvas绘画应用程序。

对于某些操作,我每次使用鼠标选择绘图时都会使用访问者。 目前我再次重新创建访客,如:

Visitor visitor = isStateSelected ? new SelectionVisitor() : DrawVisitor();

我是否应该考虑让这些访问者保持静态,或至少为他们引入私人领域?或者可以说现在的方式更干净,对象创造不是一个很大的开销?

2 个答案:

答案 0 :(得分:2)

我建议使用状态模式来触发相应的访问者。缓存在应用程序层中确实是个坏主意。域模型类不应该引用它们,它们应该仅存在于配置层中。

答案 1 :(得分:1)

如果此对象创建是您的应用程序的瓶颈,我认为私有缓存将是下一步。如果它没有减慢你的速度,我想你可以继续讨论下一个问题。

我喜欢保持代码清洁的尝试。如果您不希望使用访问者缓存来混淆代码,可以通过将其包装在管理缓存变量的private getVisitor()方法中来将其分开。