Есть такой принцип в программировании: программируй интерфейсами, а не классами. Цель — показать какие методы можно юзать у твоего класса для работы с ним, а реализация остается за тобой и никто не будет в неё вникать. А если кому-то понадобится написать новую логику, он просто напишет новый класс, который будет реализовывать твой интерфейс, но работать по другому. Так делают потому, что есть еще один принцип программирования, классы должны быть закрыты для изменения, но открыты для расширения. Как-то так.