Проектирование веб-программы, правильно ли я сделал?
AbstractTask нужен только для DRY. В вашем случае он пока лишний, чуть что добавите позже. Даже больше, можно пока даже интерфейс отдельно не делать. Если в будущем нам понадобится добавить еще одну реализацию скажем... Task-а или TaskManager-а, выделение инетфейса класса вам сделает любая нормальная IDE. Назовете этот интерфейс TaskManager и будет у вас реализация оного ScheduledTaskManager и DBTaskManager... для примера. А клиентский код такие штуки не затронет вовсе.
Советую вооружиться PhpSpec и таким образом проверять насколько удобно вы спроектировали API ваших сервисов.
Или унаследоваться от абстрактного класса лишнее, пока нет потребности в создание других менеджеров и иных методов класса Task?
Нужно ли делать для всех классов интерфейсы, если в будущем есть вероятность его расширения?