Состав, агрегация и DI - PullRequest
       28

Состав, агрегация и DI

0 голосов
/ 18 мая 2010

Агрегация : объект существует вне другого, создается снаружи, поэтому он передается в качестве аргумента (например) строителю. Пример: люди - машина. Автомобиль создается в другом контексте, а затем становится личностью.

Композиция : объект существует или имеет смысл только внутри другого, как часть другого. Пример: люди - сердце. Вы не создаете сердце, а затем передаете его человеку.

Означает ли это, что для платформ DI агрегирование является предпочтительным и более распространенным подходом и улучшает тестируемость?

Означает ли это также, что отсутствие множественного наследования в языке, подобном C #, можно смягчить с помощью агрегации. Я всегда слышал обсуждение, сформулированное в терминах « композиция против наследования». Есть ли причина для этого?

1 Ответ

2 голосов
/ 18 мая 2010

Делегирование обеспечивает более гибкое решение, чем наследование - есть хорошая статья под названием , почему extends является злой , которая объясняет больше об этом - однако, какая версия (будь то Aggregation или Композиция) является академической - вы определили различия и какую из них использовать, когда речь идет о том, чего вы пытаетесь достичь. Отсутствие множественного наследования обычно смягчается через интерфейсы.

...