gpt4 book ai didi

java - DAO Factory 的示例,其数据源不会在不同版本之间更改

转载 作者:行者123 更新时间:2023-12-02 05:04:11 25 4
gpt4 key购买 nike

下图展示了 DAO Factory 的结构,其数据存储在不同版本之间不会更改:

enter image description here

我的问题是关于实现的示例。假设我们有两个不同的 DAO

UserDAO

public interface UserDAO{
//CRUD operations and something else
}

PaymentsDAO

public interface PaymentsDAO{
//CRUD operations and something else
}

现在我们有两个 DAO 实现:

UserDAOImpl

public interface UserDAOImpl{
DataSource dataSource;
//Implementation of the operations
}

PaymentsDAOImpl

public interface PaymentsDAOImpl{
DataSource dataSource;
//Implementation of the operations
}

现在我们正在创建一个新类,名为DAOFactory:

public abstract class DAOFactory{
UserDAO userDAO;
PaymentsDAO paymentsDAO;

public abstract getUserDAO();
public abstract getPaymentDAO();
}

那么,现在如果我们有一个 BusinessObject,比如 PaymentService,我们只需添加一个 DAOFactory 作为字段并使用它,对吗?但是为什么我们需要将所有 DAO 封装到工厂中呢?如果我们将必要的 DAO 对象作为属性添加到 BusinessObject 中,不是更简单吗?

最佳答案

使用依赖注入(inject),您的服务具有最小的耦合性,并且无需了解 dao 工厂。

    DaoFactory daoFactory = new RdbDaoFactory(dataSource);

myPaymentService.setUserDao(daoFactory.getUserDAO());
myPaymentService.setPaymentDao(daoFactory.getPaymentDAO());

将所有 dao 封装到工厂中为您提供了实例化它们的中心点,并且如果您的持久层发生变化,将来可以轻松切换。

您最后的观点是不是在业务对象(而不是工厂)中使用 Dao 更好是正确的,我希望我的示例可以为您说明这一点。

关于java - DAO Factory 的示例,其数据源不会在不同版本之间更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27945666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com