2010-03-12 7 views
0

У меня есть вопрос относительно составного рисунка.Композитный шаблон

Является ли базовый класс «Компонент» действующим как указатель на объект листового объекта в классе «Композитный»?

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

Ниже приведена диаграмма класса uml.

alt text

+0

Что я хочу сказать, указатель - это ссылки. –

+0

Ваш вопрос непонятен. –

+0

amit: Это кристально чистое. Вы также можете увидеть диаграмму и посмотреть на символ бриллианта. –

ответ

3

Соотношение между композитным и компонентой:

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

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

+0

Действительно, это отношение агрегации. –

+1

@Syed: не совсем, поскольку я упоминаю, что существуют два вида отношений между Component и Composite: наследование и агрегация. Объединение обоих этих соотношений дает нам структуру, которая называется * рекурсивной композицией * в теории oop. – Roman

1

Компонент

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

листьев

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

Композитные

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

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

+0

Мой вопрос касается отношения между композитом и компонентом. Как вы можете видеть символ формы бриллианта с составным классом. –

0

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

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

Подробнее here

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