Patrones de diseño · Pregunta 9 de 12

Un servicio de checkout selecciona el método de pago mediante switch, y cada nuevo método de pago requiere un cambio en esta clase. ¿Qué refactorización se ajusta al principio abierto/cerrado?

1 respuesta es correcta. Medio

Mostrar solución

Solución

  • A Una interfaz PaymentProviderInterface con #[AutoconfigureTag('myext.payment')], una clase por método de pago y #[AutowireIterator('myext.payment')] iterable $providers en el servicio

Explicación

El patrón strategy encapsula cada método de pago en su propia clase con una interfaz común. Mediante el tag, el contenedor recopila todas las implementaciones, y el servicio pregunta a cada una si es responsable. Los nuevos métodos de pago, también de otras extensiones, se añaden sin cambiar el servicio. Un switch extraído o una clase colectiva siguen teniendo que cambiarse con cada nuevo método.

Certificaciones y exámenes

¿Qué examen viene después?

Ya puedes practicar 19 exámenes y 21 están en votación. Mira todas las certificaciones con información oficial, vota o propón tu examen.

Ver todas las certificaciones