Unidad 1 de 3

Patrón Trigger Handler

15 min +150 puntos

Objetivos de aprendizaje

Al final de esta unidad será capaz de:

  • Crear un trigger limpio que delegue en una clase handler.
  • Separar lógica por contexto (before/after, insert/update).

Un trigger por objeto, una clase handler

Antes:

trigger AccountTrigger on Account (before insert, before update) {
    for (Account a : Trigger.new) {
        if (a.Industry == null) {
            a.Industry = 'Other';
        }
    }
}

Mejor:

trigger AccountTrigger on Account (before insert, before update) {
    new AccountTriggerHandler().run();
}

public with sharing class AccountTriggerHandler {
    public void run() {
        if (Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) {
            asignarIndustriaPorDefecto((List<Account>) Trigger.new);
        }
    }

    private void asignarIndustriaPorDefecto(List<Account> cuentas) {
        for (Account c : cuentas) {
            if (c.Industry == null) c.Industry = 'Other';
        }
    }
}

Esto separa la responsabilidad del trigger (decidir cuándo correr) de la lógica de negocio (qué hacer). Sus tests serán mucho más fáciles.

Inicia sesión para guardar tu progreso

Marca unidades como completadas, gana puntos y consigue tu estatus Agentblazer.