2013-02-26 4 views
3

Если у вас есть реализация составного шаблона проектирования (или любой системы типа граф/узел), какой шаблон проектирования лучше всего описывает процесс соединения узлов и создания связей между экземплярами класса?Какой шаблон дизайна можно использовать для соединения элементов композита?

В моем рабочем примере используется шаблон фабрики для создания каждого экземпляра класса, но теперь я ищу подключение их в отдельной области кода или на основе данных из файла.

Мне интересно, возможно ли это шаблон «строитель», но примеры, которые я видел, очень упрощены, и я нахожу это довольно быстрым, чтобы применить шаблон к моему домену на основе этих примеров. Возможно, есть еще один шаблон, который более применим к моему домену со ссылкой на составной шаблон. примеры и ссылки были бы весьма признательны.

Большое спасибо D

EDIT: Немного больше исследований подвернулся хороший блог о порождающих моделей. Говорят, что, как правило, «строители» часто строят композиты.

http://sourcemaking.com/creational_patterns

+0

+1 Для интересующего вопроса и ссылки на sourcemaking.com - хороший сайт! – ngm

ответ

1

Если вы хотите, чтобы построить весь составной элемент в одно время, строитель хороший выбор. например, если вы строите график дорог в городе и хотите построить весь город - используйте шаблон строителя. вы можете добавить подстроителей к вашему строителю, чтобы добавить окрестности, чтобы ваш класс строителя не был слишком большим - просто делайте композитный для bulder. , но если вы хотите добавить элементы после того, как композит уже существует, я предлагаю следующее: , если вы знаете, где добавить элемент, который вы можете предоставить итератору для вашего композита и предоставить метод добавления итератору с индексом или новым местом, которое вы хотите для добавления ваших элементов. , например, если вы отсортировали дерево, то итератору будет добавлена ​​функция, которая будет знать, где добавить элемент в соответствии с его положением в дереве. другой вариант, если вам нужно добавить элемент в композит, который вам действительно не нужен, например, вы строите город с улицами, и вы хотите добавить улицы рядом с самой короткой улицей. ну, в этом случае я, вероятно, использовал бы предикат или какой-то фильтр, который будет статическим внутренним классом в вашем составном типе.

Смежные вопросы