Diverse volte, mi sono trovato in una situazione in cui voglio aggiungere funzionalità a una relazione esistente Observer - Observable .
Ad esempio, supponiamo di avere una classe Observable chiamata PriceFeed , le cui istanze sono create da una varietà di PriceSources . Observers su questo viene notificato ogni volta che il sottostante PriceSource aggiorna PriceFeed con un nuovo prezzo.
Ora voglio aggiungere una funzione che consente di impostare una sovrascrittura (temporanea) su PriceFeed . Il PriceSource dovrebbe ancora aggiornare i prezzi su PriceFeed , ma fino a quando viene impostato l'override, ogni volta che un consumatore chiede PriceFeed per il suo valore corrente, dovrebbe ottenere l'override.
Il modo in cui l'ho fatto è stato introdurre un nuovo OverrideablePriceFeed che sia esso stesso un Observer e un Observable , e che decori il PriceFeed effettivo. La sua implementazione di .getPrice() è direttamente da Chain of Responsibility, ma che ne è della gestione degli eventi Observable? Quando un override è impostato o deselezionato, dovrebbe rilasciare il proprio evento a Observers , così come inoltrare eventi dal PriceFeed sottostante.
Penso che sia una specie di osservatore incatenato, ed ero curioso di sapere se esiste una descrizione più definitiva di un modello simile.