Какое лучшее описание Data, Context and Interaction (DCI), чтобы передать его организации?
Он создан Trygve Reenskaug, создатель MVC -pattern.
Действительно ли это преемник MVC или просто другой шаблон? И каковы его плюсы и минусы?
Какое лучшее описание Data, Context and Interaction (DCI), чтобы передать его организации?
Он создан Trygve Reenskaug, создатель MVC -pattern.
Действительно ли это преемник MVC или просто другой шаблон? И каковы его плюсы и минусы?
Мне кажется, что это не преемник MVC, а дополнение, например, цифра 5 в статья artima по DCI имеет оба. Я думаю, что это должно помочь сделать различие между моделью и контроллером более разумным или, возможно, между разной частью контроллера или различными частями модели.
Основная идея состоит в том, чтобы разделить логику для конкретных действий наших классов данных и перенести ее на черты /mixins/whatever, по одному на (пользовательское) действие. У вас будет много маленьких кусочков кода, а не несколько больших кусков. Кроме того, похоже, что добавление новых микшинов должно быть "лучше", чем добавление функциональности к базовым классам. Код для отдельных действий, скорее всего, (я думаю?) Будет более распространенным, но код для разных действий должен быть более четко и явно отделен.
Trygve делает презентацию DCI в http://oredev.org/videos/dci--re-thinking-the-foundations-of-oo
DCI создан для решения проблемы в ориентации объекта: слишком сложно просмотреть код OO.
Код для одного прецедента в OO типично распространен между множеством классов. Чтобы понять, как работает код, вы также должны знать отношения между объектами во время выполнения. Эти отношения не заданы в коде, они зависят от ситуации.
Что предлагает DCI, так это то, что код для данного прецедента отделен от классов и помещается в другой артефакт, называемый контекстом. Объекты разных классов могут вступать в отношения в этом контексте и участвовать во взаимодействии, где у них разные роли.
Весь смысл DCI - сделать OO-код более удобочитаемым!
Как я мог бы передать это.
Хороший вопрос и часто возникающий вопрос. Короткий ответ заключается в том, что это парадигма, основанная на основополагающих идеях OO Кей, Даля и других. Он был создан Трюгве Реенскаугом, как вы отмечаете, имея в виду несколько целей. Одним из них является стремление сделать IO операций первоклассными гражданами программы. (не IO, как в дисковых операциях, а все коммуникации между двумя разными объектами). Еще одна важная цель DCI состоит в том, чтобы разделить то, что система (функциональность/поведение) от того, что система (данные)
Я думаю, что улучшение системного понимания - огромная победа для любой организации, но вы также можете сделать так, что DCI является улучшением на MVC из-за следующих дополнительных факторов:
Он полностью смотрит на меня как на дизайн, основанный на политике Андрея Александреску в Modern С++, однако работа на более низком уровне, DCI выглядит как архитектура с частичной методологией (примеры использования приводят дизайн).