gpt4 book ai didi

Java设计问题

转载 作者:行者123 更新时间:2023-12-01 05:49:52 25 4
gpt4 key购买 nike

我希望用户通过objectmanager进行所有持久化操作,而不是直接使用UserDao,如何使UserDao对用户不可见。我正在使用 spring 将实现注入(inject)到 UserDao 中。

public class ObjectManager {

public static UserDao USER_DAO;

@Inject
public void setUserDao(UserDao userDao) {
ObjectManager.USER_DAO = userDao;
}
}

public interface UserDao extends GenericDAO<User,Long>{
User findUserByUsername(String username);
}

我试图实现的目标是每个人都遵循一条路径来执行持久性操作,在我的情况下,它将是 ObjectManager.USER_DAO.save(obj) ..类似这样的东西,而不是一个开发人员执行 userDao.save(obj) ....ObjectManger 纯粹是为了方便。任何主体都可以键入 objectManager。 IDE 将显示可用的 dao 列表

最佳答案

我的建议:不要这样做

这会毫无明显原因地将您的 DAO 类与中央静态 ObjectManager 类紧密耦合。这使得应用程序中的代码难以进行单元测试,因为无法模拟像 ObjectManager.USER_DAO.save(obj) 这样的静态引用。此外,应用程序将更难维护,因为对 ObjectManager 的任何更改都会影响几乎所有代码( future 场景示例:您想要将某些 DAO 访问器移出 ObjectManager)。

如果您重视可测试性和可维护性,请避免使用静态访问的全局类。

关于Java设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994491/

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