gpt4 book ai didi

java - 如何创建一对一的单例关系

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:24 26 4
gpt4 key购买 nike

我的应用程序中有两个单例,这是我的问题:它们中的每一个都需要彼此,所以我无法构建两者中的任何一个,因为我会得到一个 stackOverflowError 。如何克服它?

public class ApplicationService {

private ApplicationDao applicationDao;
private DerogationService derogationService;
private LogService logService;
private static ApplicationService applicationServiceInstance;

private ApplicationService()
{
applicationDao = ApplicationDao.getInstance();
derogationService = DerogationService.getInstance();
logService = LogService.getInstance();
}

public static synchronized ApplicationService getInstance(){
if(applicationServiceInstance == null)
{
applicationServiceInstance = new ApplicationService();
}
return applicationServiceInstance;
}

.

public class DerogationService {

private DerogationDao derogationDao;
private ApplicationService applicationService;
private DroitService droitService;
private static DerogationService derogationServiceInstance;

private DerogationService(){

applicationService = ApplicationService.getInstance();
droitService = DroitService.getInstance();
derogationDao = DerogationDao.getInstance();
}

public static synchronized DerogationService getInstance(){
if(derogationServiceInstance == null)
{
derogationServiceInstance = new DerogationService();
}
return derogationServiceInstance;
}

谢谢大家! :)

最佳答案

正如您在OP中所说的那样,但实际上没有说出来,您遇到了循环引用问题。

您可以考虑使用 Spring 容器(以及其他容器)来解决此问题。

关于java - 如何创建一对一的单例关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385878/

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