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