Nelle parole di Layman:
La stessa ragione per cui i produttori di impianti elettrici hanno costruito i loro prodotti con le prese elettriche invece dei semplici cavi sbucciati e le case sono dotate di prese a muro invece di staccare i cavi che sporgono dal muro.
Usando invece le spine standard, consentono di collegare le stesse installazioni in qualsiasi presa compatibile intorno alla casa.
Dal punto di vista della presa a muro, non importa se si collega un televisore o uno stereo.
Ciò rende più utili sia l'appliance che il socket.
Prendi ad esempio un metodo che accetta una mappa come argomento.
Il metodo funzionerà indipendentemente dal fatto che passi una HashMap o una LinkedHashMap, a patto che sia una sottoclasse di Map.
Questo è principio di sostituzione di Liskov .
Nel codice di esempio che hai fornito, significa che puoi in un secondo momento, per qualche motivo, modificare l'implementazione concreta di Hash e non dovrai modificare il resto del codice.
Il problema con il software è che, dal momento che è relativamente facile cambiare le cose in seguito senza spreco di mattoni o malta, la gente presume che quel tipo di pensiero non valga la pena. Ma la realtà ci ha mostrato che la manutenzione del software è molto costosa.