有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Seam 2中内置工厂的优势是什么

我见过在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
...
组件。xml
<factory auto-create="true" name="weirdDao" value="#{weirdConcreteDao}"/>

我的理论是,在第二个示例中,Seam负责对象的创建,并(希望)控制类似实例池的内容。
这两种用法的正反两方面有什么官方解释吗?
提前谢谢


共 (1) 个答案

  1. # 1 楼答案

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

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

    对于注入服务或DAO之类的bean,我们通常不使用factory

    主要原因是,服务或DAO类型bean的创建不包含状态,也不依赖于任何状态。那么,为什么我要为它编写工厂方法或配置,这样我就可以轻松地将责任转移到容器上呢

    但是在EntityDomain的情况下,类型bean可能因状态而异。例如,您需要根据登录的用户创建配偶bean。为此,根据用户编写一个工厂方法来创建配偶bean。通常情况下,您不需要依靠容器来实现这一点

    希望这有帮助