В настоящее время я читаю книгу «Шаблоны дизайна» банды четырех человек. В один момент сравниваются структуры времени выполнения и времени компиляции. В этом разделе написано:Знакомство с объектом
Агрегация подразумевает, что один объект владеет или несет ответственность за другой объект. Обычно мы говорим об объекте , имеющем или находящемся часть другой объект. Агрегация подразумевает, что совокупный объект и его владелец имеют одинаковые сроки жизни.
Моя интерпретация, что это что-то вроде следующего в Java:
public class SomeClass{
private OtherClass; //This is the aggregate object
//...
}
Я предполагаю, что это то, что они означают, и я считаю, что легко понять. Но тогда они определяют знакомство:
Знакомства предполагает, что объект просто знает другой объект. Иногда знакомство называется «ассоциация» или «использование». Означенные объекты могут запрашивать операции друг друга, но они не несут ответственности за друг за друга. Знакомство - более слабые отношения, чем агрегация, и предлагает гораздо более слабую связь между объектами. ... В C++ агрегация может быть реализована путем определения переменных-членов, которые являются реальными экземплярами, но чаще их определяют как указатели или ссылки на экземпляры. Знакомство осуществляется с указателями и ссылками.
Этот окончательный бит меня смущает. Может ли это быть достигнуто только с помощью указателей? Они говорят о C++ конкретно, означает ли это, что это невозможно сделать на Java? В моем понимании отношение будет знакомство молодежи быть что-то вроде этого в Java:
public class SomeClass{
///...
public void doSomething(SomeOtherClass some_other_class){
some_other_class.doSomethingElse(); //Is this (an) aquaintance?
}
///...
}
Я не совсем уверен, что я получил эту концепцию() вниз знакомства молодежи. Кто-нибудь захочет просветить меня, если это правильный способ просмотра вещей на Java? Или можно ли познавать отношения на Java, потому что у нас нет указателей?
Наконец, они говорят:
В конечном счете, знакомство и агрегация больше определяется намерением, чем механизмы явного языка.
Что это должно означать? Это просто абстрактные понятия, а не фактические реализации или что-то еще?
Difference aggregation, acquaintance and composition (as used by Gang Of Four). Это был единственный вопрос, который я смог найти, который приблизился к моему, но мне это не очень помогает. Заранее спасибо.
«Это просто абстрактные понятия». В точку. Большинство языков не могут выразить свое различие. – molbdnilo