Pull to refresh

Нетрадиционная ориентация ООП

Reading time1 min
Views10K
Дверь.Замок.Повернуть(
обычныйКлюч, 
обороты: 2, 
контекстЗдания: мойДом.мояКвартира.ПолучитьКонтекст());

Встречали подобное в реальной жизни? Я тоже нет.

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

Сама архитектура ООП вынуждает нас грешить, смешивая вышеназванные разнокачественности. Героическая попытка вопреки всему отделить поведение от свойств выглядит уродливо. Появляется целая армия классов, само название которых кричит о том, что они, собственно, никакие не классы в полном смысле, а… ну да, просто чье-то поведение. Обычно это здесь_могла_быть_ваша_реклама-Presenter, -Builder, -Updater, -Visualizer и, обязательно, -Provider… Они выглядят как объекты, а на самом деле — лишь придатки к нашим (непорочным) моделям.

Я это вот к чему. Мы либо отказываемся от слова «объектно» — и заменяем его более адекватным. Тогда никаких проблем: пусть будут замки, которые сами открываются после того, как им скормлен контекст квартиры. Либо мы думаем какой должна бы стать (в будущем) архитектура ООП, чтобы она не мешала, а способствовала отделению свойств от поведения.

По ходу дискуссии — хорошая мысль по теме.

Еще умная мысль: habrahabr.ru/post/320976/#comment_10049064
Tags:
Hubs:
Total votes 80: ↑20 and ↓60-40
Comments182

Articles