Come attivare altri eventi in MVC, una volta completato l'evento desiderato?

6

Che cos'è una tecnica in MVC che può essere utilizzata per attivare gli aggiornamenti?

Vale a dire,

Quando l'utente fa clic su un pulsante salva un prodotto, ho questo:

function saveProduct($product)
{
    $this->repository->saveProduct($product);
}

Ma l'aggiunta di (qualsiasi) prodotto deve attivare un aggiornamento dello stato globale. L'ho fatto così:

function saveProduct($product)
{
    $this->repository->saveProduct($product);
    $this->repository->updateGlobalState();
}

Ma poi finisco con il codice updateGlobalState in ogni metodo ... cioè:

function saveMotor($motor)
{
    $this->repository->saveMotor($motor);
    $this->repository->updateGlobalState();
}

C'è un modo per non ingombrare metodi specifici ma in qualche modo attivare l'aggiornamento dello stato globale in un modo diverso in modo che i metodi siano privi di clutter?

    
posta Dennis 31.10.2016 - 17:56
fonte

1 risposta

3

Lo schema di progettazione " observer " è esattamente quello che stai cercando.

Ecco un ottimo modo documentato per implementare questo modello . E c'è anche il codice.

Quindi il tuo Prodoct sarebbe l'oggetto osservato (chiamato Subject) e la controparte è l'Observer che viene notificato da ogni aggiornamento sul prodotto e può reagire di conseguenza.

Ma hai ancora bisogno di questo metodo di notifica in qualsiasi stato che cambia metodo del Prodotto.

    
risposta data 21.06.2017 - 11:40
fonte

Leggi altre domande sui tag