Supponiamo di avere un'interfaccia di flusso di input, che definisce un metodo per leggere i dati. Ho anche un'interfaccia cercabile che definisce un metodo per la ricerca. Un modo naturale di definire un file di input è quindi quello di implementare sia il flusso di input che la ricerca.
Voglio costruire un decodificatore di dati dall'interfaccia del flusso di input in modo da poter leggere i dati da un file o da un altro stream. Il problema è che voglio anche implementare la funzionalità di ricerca per il decodificatore di dati, dal momento che voglio essere in grado di passare i singoli record non i byte non elaborati. Questo non è possibile se fornisco solo un flusso di input, che non ha il metodo di ricerca bytewise.
Devo saltare l'interfaccia ricercabile e aggiungere il metodo seek per inserire stream e forzare tutti i flussi almeno a lasciarlo come un nop.
EDIT: il decodificatore non deve cercare se il client non richiede un'operazione di ricerca. Anche lo stream è associato al decodificatore e non può essere modificato dopo l'inizializzazione