Sobes.tech
Junior — Middle

Que abordagens usar para evitar a criação direta de uma instância de função no código?

sobes.tech IA

Resposta da IA

Para evitar a criação direta de uma instância de uma função (por exemplo, um objeto ou uma classe) no código, utilizam-se as seguintes abordagens:

  1. Método de Fábrica (Factory Method) — cria objetos através de métodos especiais, ocultando os detalhes da criação.

  2. Injeção de Dependências (Dependency Injection) — os objetos são passados para a classe de fora, geralmente através do construtor ou de um setter, o que facilita a substituição e os testes.

  3. Uso de interfaces e abstrações — o código trabalha com interfaces, e as implementações concretas são criadas e passadas de fora.

  4. Expressões lambda e interfaces funcionais — em vez de criar novas classes, pode-se passar funções como parâmetros.

Exemplo com injeção de dependências no Android (Kotlin):

interface ClickHandler {
    fun onClick()
}

class MyActivity(private val clickHandler: ClickHandler) {
    fun setup() {
        // Usamos o manipulador passado em vez de criar um novo
        button.setOnClickListener { clickHandler.onClick() }
    }
}

Este método aumenta a flexibilidade e a testabilidade do código, além de facilitar a manutenção e a extensão.