Почему прокси-паттерн является Структурным паттерном и почему State Pattern является поведенческим паттерном? - PullRequest
3 голосов
/ 17 мая 2011

почему шаблон прокси является структурным шаблоном, а шаблон состояния - поведенческим шаблоном. Какие критерии для определения нового паттерна следует считать структурными или поведенческими?

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Шаблоны являются структурными, если основное внимание уделяется организации отношений между объектами для формирования более крупных компонентов, тогда как поведенческие шаблоны фокусируются на распределении обязанностей между объектами и связи между ними

Прокси-структура является структурной, поскольку она действуеткак суррогат для другого объекта, состояние является поведенческим, потому что состояние передается объекту, чтобы влиять на его поведение во время выполнения.

3 голосов
/ 17 мая 2011

Давайте начнем с определения структурных и поведенческих паттернов.

Структурные шаблоны: Структурные шаблоны фокусируются на том, как классы и объекты составляются для формирования более крупных структур. Наследование - это механизм, который используют шаблоны структурных классов для создания реализаций или интерфейсов. Структурные шаблоны объектов иллюстрируют способы составления объектов способами, которые предоставляют им новую функциональность.

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

Если вы поразмышляете над этим, вся предпосылка заключается в том, что это связано с моделированием структуры класса / объекта, перейдите к Структурным паттернам, и если вы имеете дело с изменением поведения, тогда поведенческие паттерны придут вам на помощь.

В случае Прокси, вы просто оборачиваете цель и переадресовываете вызов. В случае State вы фактически используете наследование (как описано в определении выше) и, следовательно, полиморфизм для изменения поведения во время выполнения.

Надеюсь, это поможет.

...