Как у нас могут быть разные реализации алгоритмов для одной и той же функциональности и обеспечить гибкость использования новой реализации, которая будет разработана позже, без изменения существующих кодов и перекомпиляции всего приложения.