Подумайте о работе, которую вам нужно выполнить, и о том, как далеко она находится от того места, где вы сейчас пишете код. Там есть спектр; ваша позиция в ней отражает объем работы, которую вам нужно выполнить, чтобы задействовать эту функцию.
Абстракции перемещают эту позицию ближе к коду, который вы пишете. Например, если вам нужно вызвать веб-сервис, вы можете либо: 1) написать вызывающий код непосредственно там, где вам нужно его использовать, либо 2) поместить эти детали за абстракцией (например, интерфейсом).
В этом случае # 1 приближает вас к веб-службе в спектре, а # 2 удерживает вас ближе к вашей работе. Можно сказать, что абстракция является мерой того, как далеко вы должны растянуть свой разум, чтобы понять работу, которую вам нужно сделать.
Это означает, что каждый кусок работы можно абстрагировать, чтобы он был «ближе» к коду, использующему его. Поскольку обе стороны операции зависят от абстракций, они обе становятся более понятными, и ни одна из сторон не должна утаивать знание разрыва между ними - это работа абстракции.
Ого, это было абстрактно.