Словами Лаймана:
З тієї ж причини, що виробники електричних фірм побудували свої вироби з електричних штепсельних вилок замість того, щоб просто відшаровувати кабелі, а будинки оснащуються настінними розетками замість шліфованих кабелів, що стирчать зі стіни.
Використовуючи натомість стандартні штекери, вони дозволяють підключити однакові програми до будь-якого сумісного штекера навколо будинку.
З точки зору настінного розетки, не має значення, підключаєте ви телевізор чи стерео.
Це робить і прилад, і розетку більш корисними.
Візьмемо для прикладу метод, який приймає Map як аргумент.
Метод буде працювати незалежно від того, чи передаєте ви йому HashMap або LinkedHashMap, якщо це підклас Map.
Це принцип заміни Ліскова .
У наданому зразковому коді це означає, що ви можете пізніше, з якоїсь причини, змінити конкретну реалізацію Hash, і вам не потрібно буде змінювати решту коду.
Проблема з програмним забезпеченням полягає в тому, що, оскільки змінити речі пізніше, не витрачаючи цегли та розчину, порівняно легко, люди припускають, що така заздалегідь продумана думка не варта. Але реальність показала нам, що обслуговування програмного забезпечення дуже дороге.