Compártelo con tus amigos!

Las interfaces en Apex de Salesforce son utilizadas para separa la implementación de los métodos de una clase de su definición. Además, nos sirve para forzar la implementación de ciertas propiedades en una clase.

¿Qué son las Interfaces en Apex de Salesforce?

Es una forma de abstraer diferentes capas de código. De esta manera, se pueden tener diferentes implementaciones de un método basado en la clase que crea la interfaz.

Por otro lado, los métodos son únicamente definidos en la Interfaz. En consecuencia, el cuerpo de estos métodos debe escribirse en la clase que la implementa.

¿Cómo Definir una Interfaz en Apex de Salesforce?

Para definir una interfaz, utilizamos la palabra reservada Interface en lugar de class. Además, únicamente, definimos los métodos que se implementarán. Sin modificador de acceso (public, global o private).

public Interface OrdenDeCompra {
  String generarCodigo();
  Datetime establecerFechaDeCompra();  
}

Para usar una Interfaz, debemos utilizar la palabra reservada implements en nuestra clase.

public class ClienteOrden implements OrdenDeCompra {
  String codigo;
  public ClienteOrden (String codigo) { this.codigo = codigo; }
  public String generarCodigo () {
    return 'XSF' + codigo;
  }
  public Datetime establecerFechaDeCompra() {
    return System.now();
  }
}

¿Cuándo usar una Interfaz en Apex de Salesforce?

Una interfaz puede usarse cuando diferentes objetos realizan una misma acción. Sin embargo, esta acción es ejecutada de diferente manera por cada objeto.

Por ejemplo, un Guitarrista siempre afina su instrumento. No obstante, el Guitarrista A lo hace de una forma y el Guitarrista B de otra.

En este ejemplo, Guitarrista sería la interfaz y define el método afinarInstrumento“.

public Interface Guitarrista {
  void afinarInstrumento();
}

La clase GuitarristaA y GuitarristaB implementan esta interfaz por que ambos utilizan el método “afinarInstrumento“.

public class GuitarristaA implements Guitarrista {
  public void afinarInstrumento() {
    System.debug('Afinar de oido');
  }
}

public class GuitarristaB implements Guitarrista {
  public void afinarInstrumento() {
    System.debug('Usé un afinador analógico');    
  }
}

No obstante, cada guitarrista escribe el contenido del método “afinarIntrumento” de diferente manera. El GuitarristaA afina su instrumento al oído y el GuitarristaB lo hace con un afinador analógico.

Datos sobre Interfaces en Apex de Salesforce

  • Una interfaz sólo debe definir los métodos que se implementarán en otra clase.
  • Una interfaz puede definir métodos void. Es decir, puede crear métodos que no retornen valores.
  • Los métodos de una interfaz no llevan modificadores de acceso en su definición.
  • Los modificadores de acceso permitidos en la implementación de los métodos de una interfaz son: Public o Global.
  • La clase que implementa a la interfaz debe, obligatoriamente, implementar todo los métodos definidos en la interfaz.
  • A diferencia de una clase de Apex, una interfaz no puede instanciar un objeto.

Más Información

Para saber más sobre Salesforce, puedes visitar nuestro último post sobre Herencias de Clases en Apex de Salesforce

(Visited 107 times, 1 visits today)

Compártelo con tus amigos!

Close