Хороший но обьемный вопрос в ответе. К примеру чтобы потом в случае надобности можно было просто и безболезненно поменять функциональность. А то какой-то антипаттерн получается если в каждом фрагменте кода в случае чего потом придется что-то менять. Абстракция это хорошо и удобно.
__________________
Правильный вопрос, это половина ответа.