Site Tools


c_composite
стр.34 GOF Композиция объектов - это альтернатива наследованию класса. В этом случае ноую, более сложную
функциональность мы получаем путем объединения или композиции объектов. Для композиции требуется, чтобы
объединяемые объекты имели четко определенные интерфейсы. Такой способ повторного использования называют
ЧЕРНЫМ ЯЩИКОМ (black-box reuse), поскольку детали внутреннего устройства объектов остаются скрытыми.

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

Предпочитайте композицию наследованию класса.

Вероятно, тут рассказывается о ВКЛЮЧЕНИЕ абстрактного интерфейса как переменную класа. В дальнейшем, в эту переменную можно подставляться любые классы с реализованным интерфейсом. Пример: паттерн стратегия
UDP: еще композицюи называют агрегацией по ссылке. Подробнее в агрегации

стр.403 Лафоре - Композиция, более сложная форма объединения. Она обладает всеми его свойствами, но имеет еще и такие:
  - Часть может принадлежать только одному целому
  - Время жизни части тоже, что и целого.
Если включение - это взаимотошения типа "имеет", то композиция - это взаимоотношения типа "состоит из".

В UML изображается закрашенным ромбом в сторону к содержащиму классу. (для включения, это не закрашенный ромб)

You could leave a comment if you were logged in.
c_composite.txt · Last modified: 2013/02/26 11:52 by konovalov

Page Tools