Каково различие между отношениями Состава и Ассоциации?

Я настоятельно рекомендую вам обновить приложение, поскольку Spring 1.x скоро достигнет своего EOL .

Если вы не можете сделать это за один шаг, начиная с 1.4.x напрямую до 2.x, вы можете делать это шаг за шагом, всегда проверяя, автоматически ли следующий шаг обновления решит и вашу проблему. Хорошо настроенное приложение Spring Boot должно автоматически сериализовать вашу карту прямо из коробки.

Кроме того, вы можете проанализировать свои pom.xml для любых неуправляемых библиотек Джексона.

Практическое правило: придерживайтесь как можно дольше управляемых зависимостей Spring Boot, чтобы избежать конфликтов версий и нежелательного поведения.

22
задан Péter Török 28 June 2010 в 15:47
поделиться

7 ответов

СОСТАВ

Представьте себе компанию по разработке программного обеспечения, которая состоит из различных бизнес-единиц (или отделов), таких как Storage BU, Networking бушель Автомобильный БУ. Время жизни этих бизнес-единиц определяется сроком жизни организации. Другими словами, эти бизнес-единицы не могут существовать независимо без фирмы. Это СОСТАВ. (т. е. фирма состоит из бизнес-единиц)

ОБЪЕДИНЕНИЕ

Фирма-разработчик программного обеспечения может иметь внешних поставщиков услуг, раздающих еду сотрудникам. Эти поставщики не являются частью фирмы. Тем не менее, они связаны с фирмой. Поставщики могут существовать, даже если наша фирма-разработчик программного обеспечения закрыта. Они могут обслуживать другую фирму! Таким образом, срок службы провайдеров не зависит от времени существования программного обеспечения. Это типичная АССОЦИАЦИЯ

ОБЪЕДИНЕНИЯ

Рассмотрим подразделение по производству автомобилей. Мы можем рассматривать автомобиль как единое целое, а автомобильное колесо - как часть автомобиля. (на данный момент это может выглядеть как композиция ... держитесь) Колесо может быть создано на несколько недель раньше, и оно может сидеть на складе, прежде чем его поместят на автомобиль во время сборки. В этом примере экземпляр класса Wheel явно живет независимо от экземпляра класса Car. Thus, unlike composition, in aggregation, life cycles of the objects involved are not tightly coupled.

35
ответ дан 29 November 2019 в 03:37
поделиться

Here go a few examples:

  • I am an employee of a company, hence I am associated to that company. I am not part of it, nor do I compose it, but am related to it, however.

  • I am composed of organs, which unless are transplanted, will die with me. This is composition, which is a very strong bind between objects. Basically objects are composed by other objects. The verb says everything.

  • There is also another less bound kind of composition, called aggregation. An aggregation is when objects are composed by other objects, but their life cycles are not necessarily tied. Using an extreme example, a Lego toy is an aggregation of parts. Even though the toy can be dismantled, its parts can be recombined to make a different toy.

17
ответ дан 29 November 2019 в 03:37
поделиться

Владение и использование.

Состав: объект со ссылкой владеет указанным объектом и несет ответственность за его "жизнь", его разрушение (и часто создание, хотя это может быть передано в). Также известен как отношение has-a .

Ассоциация: объект со ссылкой использует указанный объект, не может быть эксклюзивным пользователем и не несет ответственности за он ссылался на время жизни объекта. Также известный как использует-a отношение.

ОП комментарии:

Можете ли вы привести пример из реальной жизни. Кроме того, что такое агрегация? - Марк

Агрегация: ассоциация, которая является целой и частичной и не может быть циклической.

Примеры:

Состав: у автомобиля есть двигатель, у человека есть адрес. В принципе, должен иметь, управляет временем жизни.

Ассоциация: Автомобиль имеет-Водителя, у некоторого экземпляра класса есть ErrorLogger. Время жизни не контролируется, может использоваться совместно.

Агрегация: DOM (объектная модель документа, то есть объекты, составляющие дерево элементов HTML), Node имеет a-массив (массив) дочерних узлов. Узел - это верхний (ну, высший) уровень; оно «содержит» своих детей, они не содержат его.

11
ответ дан 29 November 2019 в 03:37
поделиться

Обычно композиционные средства что время жизни содержащегося объекта ограничено временем существования контейнера, тогда как ассоциация - это ссылка на объект, который может существовать независимо.

Однако, это только практика, которую я наблюдал.

1
ответ дан 29 November 2019 в 03:37
поделиться

Независимое существование.

Счет состоит из отдельных позиций.

Какая позиция не указана в счете? Это ... ну, ничего. Он не может существовать независимо.

С другой стороны, Счет-фактура связан с Клиентом.

Клиент имеет независимое существование, со счетом или без него.

Если две вещи имеют независимое существование, они может быть связано.

Если одна вещь не может существовать независимо, то она является частью композиции.

1
ответ дан 29 November 2019 в 03:37
поделиться

Composition is a stricter relationship than aggregation. Composition means that something is so strongly related to something else that they cannot basically exist independently, or if they can, they live in different contexts.

Real world example: you define a GUI window, and then a text field where to write something. Между классом, определяющим GUI, и классом, определяющим текстовое поле, находится композиция. Вместе они составляют виджет, который сам по себе может рассматриваться как объект. Предположим, что вы удаляете окно, а также текстовое поле.

Агрегирование отличается в том смысле, что связь между двумя объектами является временной, нестабильной и случайной. Пример из реального мира. Предположим, у вас есть база данных объектов, содержащих несколько экземпляров данных. Теперь вы запускаете некоторый фильтр для сбора экземпляров данных, соответствующих заданному критерию, и полученные экземпляры помещаются в графический список, чтобы пользователь мог их видеть. Когда графический виджет получает объекты, он может сформировать совокупность этих объектов и представить их. Если пользователь закрывает окно с графическим списком, и последний удаляется, объекты данных не должны быть удалены. Может быть, они отображаются где-то еще, или они вам все еще нужны.

Также, как правило, композиция определяется во время создания. Агрегация вместо этого определяется позже в жизненном цикле объекта.

1
ответ дан 29 November 2019 в 03:37
поделиться

Композиция означает, что часть состояния объекта инкапсулирована другим типом, но концептуально является частью состояния объекта. Например, у вас может быть тип адреса и тип объекта сотрудника, который включает в себя адрес.

Ассоциация означает, что тип объекта связан с другим типом объекта, но связанный объект концептуально не является частью состояния объекта. Например, сотрудник может быть связан с компанией.

0
ответ дан 29 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: