es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Patrón de diseño para actividades

Digamos que tengo múltiples actividades con los mismos eventos y estos eventos tienen diferentes parámetros en cada actividad. La pregunta es “¿Hay algún patrón de diseño que cubra particularmente este asunto?”

Si utilizo interfaces, entonces tengo que tener los mismos parámetros en las funciones de evento. Lo que necesito es simplemente asegurarme de tener todas las funciones de evento sin parámetros en cada actividad.

Ejemplo:

class PrimeraCampaña{
    public function onFirstPurchase($arg1,$arg2, User $user){
        //
    }
    public function onFirstTrade($price,$something, User $user,Model $model){
        //
    }
}

class SegundaCampaña{
    public function onFirstPurchase(User $user){
        //
    }
    public function onFirstTrade(Model $model){
        //
    }
}

class TerceraCampaña{
    public function onFirstPurchase(User $user, Model $model, int $abc){
        //
    }
    public function onFirstTrade(){
        //
    }
}

PD. He intentado onFirstPurchase (...$arguments), pero no es exactamente lo que necesito y es demasiado complicado de trabajar.

PD. Llamo a los eventos en diferentes partes de mi aplicación y no se ejecutan en las mismas circunstancias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Un posible patrón de diseño que podría cubrir este escenario es el Patrón Observador. El Patrón Observador se puede utilizar para definir una dependencia de uno a muchos entre objetos, de modo que cuando un objeto cambia de estado, todos sus dependientes son notificados y actualizados automáticamente.

    En este caso, las clases de actividad podrían ser definidas como “sujetos”, y los eventos con diferentes parámetros podrían ser definidos como “observadores”. Cada actividad tendría una lista de observadores interesados en sus eventos, y cuando ocurre un evento, la actividad notificaría a todos sus observadores con los parámetros relevantes. Los observadores podrían entonces manejar el evento con su propia implementación específica.

    Usar este patrón permitiría que diferentes eventos tengan diferentes parámetros sin imponer una firma uniforme para todas las funciones de eventos, ya que la clase de actividad no necesitaría saber nada sobre los parámetros de las funciones de eventos de sus observadores.

Comments are closed.