Referências circulares de Java

No projeto em que estou trabalhando, as pessoas escreveram classes de serviços para acessar o DAO. Quase todos os objetos de negócios têm seu próprio serviço, que usa seu próprio DAO. Em alguns serviços, estamos usando referências a outros serviços. No momento, as pessoas estão instanciando os serviços necessários dentro do construtor.

Mas agora, tenho problemas porque o serviço A precisa de serviço B e o serviço B precisa de serviço A, portanto, uma chamada para um construtor resulta em um estouro de pilha ...

Exemplo (pseudo-código):

<code>//Constructor of OrderService
public OrderService() {
     orderDAO = DAOFactory.getDAOFactory().getOrderDAO();
     itemService = new ItemService();
}

//Constructor of ItemService
public ItemService() {
     itemDAO = DAOFactory.getDAOFactory().getItemDAO();
     orderService = new OrderService();
}
</code>

Como você resolveria isso? usando o padrão singleton?

obrigado

questionAnswers(4)

yourAnswerToTheQuestion