Композитный Узор - PullRequest
       25

Композитный Узор

0 голосов
/ 12 марта 2010

У меня вопрос по составному шаблону.

Является ли базовый класс "Компонент" действовать как указатель на конечный объект листа в классе "Композит"?

Edit: Позвольте мне задать свой вопрос в следующих словах. «Какая связь между классом Composite и Component?»

Вот диаграмма класса uml шаблона.

alt text

Ответы [ 3 ]

3 голосов
/ 12 марта 2010

Отношение между композитом и компонентом:

1) Leaf и Composite обычно реализуют один интерфейс или один абстрактный класс. На вашей диаграмме они расширяют компонент. Итак, отношение на вашей диаграмме - наследование .

2) Композит содержит экземпляры Компонента. Компонент, поскольку он иногда может быть составным, также может содержать экземпляры компонента. Это называется рекурсивная композиция . В общем случае отношение называется агрегация .

1 голос
/ 12 марта 2010

Компонент

  • - абстракция для всех компонентов, включая составные
  • объявляет интерфейс для объектов в составе
  • (необязательно) определяет интерфейс для доступа к родительскому компоненту в рекурсивной структуре и реализует его, если это необходимо

Leaf

  • представляет листовые объекты в композиции
  • реализует все методы компонента

Композитный

  • представляет составной компонент (компонент, имеющий дочерние элементы)
  • реализует методы манипулирования детьми
  • реализует все методы Component, обычно делегируя их своим дочерним элементам

http://en.wikipedia.org/wiki/Composite_pattern

0 голосов
/ 15 мая 2011

Все классы контейнеров и контейнеров объявляют отношение «является» к интерфейсу ( Компонент ).

Все классы контейнеров объявляют отношение «один ко многим» с интерфейсом.

Подробнее здесь

...