Паттерн Composite

CrazyOne

Новичок
Приветствую всех, товарищи разработчики!

Уже который час не даёт мне покоя этот паттерн. Заранее скажу, что я довольно много перечитал про этот шаблон, но мне почему-то кажется, что я не правельно всё понимаю.

Как я это всё вижу: У нас есть несколько классов, которые реализуют один интерфейс. Экземпляр одного из классов реализует часть интерфейса и может работать с экземплярами других классов. А экземпляры тех, других классов - с экземплярами работать немогут. И вся прелесть в том, что с экземпляром одного класса, что с группой экземпляров, которые являются составной частью другого экземпляра - мы работаем одинаково. Верно?

Я прошу извинение за «такое» описание проблемы, но я смутно понимаю когда сложные для меня вещи описаны на чисто профессиональном жаргоне. Прошу вас обьяснить, как говорится, на русском языке.
 

AmdY

Пью пиво
Команда форума
CrazyOne
как ты считаешь, нафига этот паттерн нужен и где ты бы мог его применить?
И вся прелесть в том, что с экземпляром одного класса, что с группой экземпляров, которые являются составной частью другого экземпляра - мы работаем одинаково. Верно?
Вот здесь ты сделал правильный вывод, осталось убедиться что ты понял. как его применять. но в целом, даже если ты не правильно понял паттер, но смог его формолизовать, придумать где применять - то это уже есть хорошо и есть свой паттерн. Например, MVC, он у каждого СВОЙ и плевать насколько он правильный-неправильный, гдлавное чтобы он помогал в реальных проектах.
 

гемоглобин

Новичок
Я прошу извинение за «такое» описание проблемы, но я смутно понимаю когда сложные для меня вещи описаны на чисто профессиональном жаргоне. Прошу вас обьяснить, как говорится, на русском языке.
Ну вот смотри, допустим ты пишешь визуализацию html для браузера. Внутри элемента <div> могут быть элементы <p>, <h1>, а может быть и другой <div> набитый разными элементами. Для рендеринга можно их представить разными классами, которые реализуют интерфейс element с объявлеными методами render(), getWidth(), getHeight(). Фишка в том, что элемент div - тоже реализует интерфейс элемент, просто у него метод render будет реализован немного по-другому - он будет рендерить не только себя, но и проходить по своим чайлдам и тоже вызывать для них render(). Так вот ему пофиг, render() какого сына он вызвал, дива с другими элементами или простого h1
 

fixxxer

К.О.
Партнер клуба
О, так это когда я во вьюхе рекурсивно прохожу по объектам и всем дергаю exportArray(), это у меня значит паттерн Composite. Буду знать :)
 
Сверху