【问题标题】:What is the advantage of built in factory in Seam 2Seam 2内置工厂有什么好处
【发布时间】:2013-12-17 23:55:28
【问题描述】:

我已经看到了在 Seam 中注入对象的两种不同策略(在我的例子中是 DAO)

1.
@In(create="true")
private WeirdDao weirdDao;
...
@Name("weirdDao")
public class WeirdConcreteDao implements WeirdDao

2.
@In
private WeirdDao weirdDao;
...
@Name("weirdConcreteDao")
public class WeirdConcreteDao implements WeirdDao
...
components.xml
<factory auto-create="true" name="weirdDao" value="#{weirdConcreteDao}"/>

我的理论是,在第二个示例中,Seam 负责创建对象并(希望)控制其实例池之类的东西。
是否有任何官方解释这两者的使用利弊?
提前致谢!

【问题讨论】:

    标签: java seam seam2


    【解决方案1】:

    在这种情况下,性能方面的优势并不是那么令人担忧。但这个问题是相当哲学的。

    Factory Pattern 是一种著名的Creational 设计模式。在Seam中,我们一般使用factory method来创建EntityDomain类型类的实例。它们通常保存数据并且没有任何处理或业务逻辑。

    对于注入 Service 或 DAO 之类的 bean,我们一般不使用工厂。

    主要原因是,Service 或 DAO 类型 bean 的创建不持有状态或依赖于任何状态。那么我为什么要为此头疼地编写工厂方法或配置,在那里我可以轻松地将责任转移给容器。

    但在EntityDomain 的情况下,bean 可能会因状态而异。例如,您需要根据登录的 用户 创建 spouse bean。为此,您需要编写一个根据 user 创建 spouse bean 的工厂方法。您通常不依赖容器来执行此操作。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2023-03-31
      相关资源
      最近更新 更多