Trigger should not contain logic, it should delegate to handler class
- johnsontitus
- May 10, 2020
- 1 min read
Eg:
trigger trgOp on Opportunity (before delete, before insert, before update, after delete, after insert, after update){
OpTrgHandler opphdler = new OpTrgHandler();
if(Trigger.isBefore){
if(Trigger.isInsert){
opphdler.beforeInsert(Trigger.New);
}else if(Trigger.isUpdate){
opphdler.beforeUpdate(Trigger.New, Trigger.Old);
}else if(Trigger.isDelete){
opphdler.beforeDelete(Trigger.Old);
}
}else if (Trigger.isAfter){
if(Trigger.isInsert){
opphdler.afterInsert(Trigger.New);
}
}else if(Trigger.isUpdate){
opphdler.afterUpdate(Trigger.New, Trigger.Old);
}
}
public class OpTrgHandler{
public void beforeInsert(List<sObject> so){
List<Opportunity> opp = (List<Opportunity>)so;
//add logic code
}
public void afterInsert(List<sObject> so){
List<Opportunity> opp = (List<Opportunity>)so;
//add logic code
}
public void beforeUpdate(List<sObject> so, List<sObject> soOld){
List<Opportunity> opp = (List<Opportunity>)so;
List<Opportunity> oldOpp = (List<Opportunity>)soOld;
//add logic code
}
//handlers for other events
}

Comments