|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вообще эта метафора с родителями и детьми не всегда способна хорошо отразить происходящее.
Мне нравится другая – мастер и инструменты. Она не отражает момент создания, но хорошо описывает отношения. Когда "родитель" создает экземпляры, какие-то объекты, он знает, зачем он это делает. Они – инструменты для достижения каких-то целей, выполнения известных мастеру задач. Мастер берет инструмент и что-то с его помощью делает (например, заменяет курсор на свой кастомный). Если мы в такой ситуации добавим инструменту логику, например реагировать на разные типы объектов, оказывающихся под курсором, нам придется построить целую машину общения курсора с окружающим миром. При этом у нас не будет никакого контроля за его поведением, и рано или поздно мы столкнемся с тем, что не можем запретить курсору меняться над объектами определенного типа, если они также соответствуют какому-то условию. Все разнообразие мира придется добавлять и добавлять в курсор, и в какой-то момент окажется, что курсор обрабатывает больше информации, чем все остальное приложение.
Здесь речь не об абстрактной логике – инструмент может быть "умнее" мастера, это нормально (пример: компьютер и оператор). Речь об областях ответственности, о видении картины в целом, знании задачи, "смысла" приложения. Приложение владеет точным знанием всех ситуаций, когда, зачем и на какой вид курсору меняться. Курсор должен только уметь это делать. Он не должен думать, это не его сфера ответственности. Инструмент должен уметь думать только над решением поставленной задачи, иначе нас ждут терминаторы и восстание сайлонов.
|