Considerare la seguente implementazione del modello di progettazione Decorator:
WordBank memorizza le stringhe e le restituisce al client tramite il metodo getWords() .
La classe decoratore, WordSorter , è una sottoclasse di WordBank (come nel modello Decoratore). Tuttavia, l'implementazione di getWords() ordina alcune stringhe e le rimuove, prima di restituire l'array al client.
Ad esempio un WordSorter potrebbe eliminare tutte le stringhe nel banco che iniziano con la lettera 'a', e solo dopo di ciò restituire l'array al client.
Questo viola il Principio di sostituzione di Liskov ? Poiché alcune implementazioni di WordBank restituiscono le stringhe mentre altre prima ordinano le stringhe e ne restituiscono solo alcune, non sono sicuro che sia sicuro dire che un WordSorter può essere utilizzato ovunque sia utilizzato qualsiasi altro WordBank . O sto capendo che questo principio è sbagliato?