Я искал материалы об истоках объектно-ориентированного программирования. Причина была в том, что в сообществе Laravel возникла тенденция использовать паттерн
Action и говорить
вот что такое «настоящее ООП». У меня возникли некоторые сомнения, и вместо того, чтобы задавать вопросы, я решил поискать ссылки времён Smalltalk. Нашёл книгу
Smalltalk, Objects, and Design. И мне было так интересно её читать, что я решил поделиться с вами своими находками.
Паттерн
Action гласит, что логику нужно обёртывать в
классы Action. Эта идея не нова, в других сообществах продвигалась «
Чистая архитектура», при которой каждый «сценарий использования» (или
Interactor) должен являться самостоятельным классом. Всё очень просто. Но об этом ли говорит ООП?
Если вам интересна суть статьи, то:
- Smalltalk был одним из первых ООП-языков. Он стал источником таких концепций, как наследование и обмен сообщениями (или как минимум он их популяризировал, насколько я вижу).
- Как сказал Алан Кей, придумавший термин «объектно-ориентированное программирование», объектов не достаточно. Они не обеспечивают нам архитектуру. Объекты — это про взаимодействие между ними, и в случае с большими системами вам нужна возможность разделения приложения на модули, которые можно отключать по отдельности, заменять и включать снова в общую систему, не кладя при этом всё приложение. В этом контексте Алан предлагает идею инкапсуляции «сообщений» в классы, когда каждый экземпляр является сообщением в системе, подкрепляя идею наличия в Чистой архитектуре классов «Action» или «интеракторов».
Продолжайте читать, если я разжёг в вас интерес.