无状态对象(无字段) - 重用或创建新对象

时间:2011-04-06 13:32:57

标签: java object seam reusability

在我的Seam webapp中,有一个服务返回生成器用于文档生成。这些对象没有状态(没有字段),只有方法。如果服务中每个生成器只有一个实例并且每个请求都返回相同的实例,有什么不对吗?或者我应该始终创建并返回一个新实例吗?

3 个答案:

答案 0 :(得分:1)

只要您确定没有保留任何状态,我就没有理由说您每次都需要重新创建状态。

与Spring中的singleton-scoped bean类似的行为

答案 1 :(得分:1)

不知道Seam,但它就像下面的EJB,不是吗?在EJB世界中,确实有这种情况的无状态ejbs :(重新)使用没有状态的对象。

因此,如果Seam可以实现这一点,并且如果这些对象没有状态,那么就让它们成为无状态bean。然后可以安全地重复使用它们。

Re:静态方法 - 可能有效,但取决于有时使用的设计,你不能拥有静态方法但需要对象实例,比如你想通过使用工厂来获得某种创建灵活性。

答案 2 :(得分:0)

如果对象完全没有状态,则重用它们没有问题。但是,如果它们完全没有状态,为什么不将所有方法都设置为静态并且根本不创建一个?

编辑:如果这个类是将功能传递给方法的一种方法,那么我同意使用静态方法是行不通的。在那种情况下,在其他条件相同的情况下,我建议创建一个新对象,纯粹是为了向任何读者表明在使用之间没有任何保留。然而,这是一个弱的偏好,如果有任何其他理由重用对象,那就去吧。