Refatoração Para testes unitários - Injeção de Dependências

Olá:

Minha situação é a seguinte: Tenho uma classe que usa um DAO preenchido no construtor:

public class UserBE {
    
    private UseeDAO userDAO;
    
    public UserBE() {
        this.userDAO = DAOFactory.getUserDAO();
    }

    public void addUser(User user) {
        this.userDAO.addUser(user);
    }
    
    // E outros métodos do gênero ...
    
}

Agora quero refatorar esta classe para usar Testes Unitários. Uma abordagem comum seria criar um getter e setter para o DAO:

public class UserBE {
    
    private UseeDAO userDAO;
    
    public UserBE() {
    }
    
    public UserDAO getUserDAO() {
        return this.userDAO;
    }
    
    public void serUserDAO(UseeDAO userDAO) {
        this.userDAO = userDAO;
    }

    public void addUser(User user) {
        this.userDAO.addUser(user);
    }
    
    // E outros métodos do gênero ...
    
}

Entretanto, quero limitar a visibilidade deste gettter e setter. Minha intenção é fazer algo como:

public class UserBE {
    
    private UseeDAO userDAO;
    
    public UserBE() {
    }
    
    // Apenas para uso interno.
    private UserDAO getUserDAO() {
        if(this.userDAO == null) {
            this.userDAO = DAOFactory.getUserDAO();
        }
        return this.userDAO;
    }
    
    // Visível apenas para classes do mesmo pacote.
    void serUserDAO(UseeDAO userDAO) {
        this.userDAO = userDAO;
    }

    public void addUser(User user) {
        this.getUserDAO().addUser(user);
    }
    
    // E outro métodos do gênero ...
    
}

Estou supondo que a(s) classe(s) de teste(s) fique(m) no mesmo pacote que a classe a ser testada. Além disso com lazy instantiation no getter estou evitando chamadas desnecessárias ao construtor caso o DAO não seja necessário e já instruo para usar o DAOFactory por padrão.
Então quero saber a opinião de vocês. Será que isso faz sentido? Já viram algo assim antes? Será que há algum pattern ou refatoração parecido com isso?

Grato,

Rafael, acho que não ficou bom. Você usa uma Factory justamente para seu código não ter que ficar poluído com isso.

Eu ou criaria um mock da sua DAOFactory pra retornar um DAO com valores de teste ou colocaria essa lógica lá dentro da própria.