Еще один вид отношений, не поддерживаемый в Java напрямую, называется делегированием (delegation). Он занимает промежуточное положение между наследованием и композицией: экземпляр существующего класса включается в создаваемый класс (как при композиции), но в то же время все или некоторые методы встроенного объекта становятся доступными в новом классе (как при наследовании). Очень часто такие виды отношений используются при построении графического интерфейса, например для реализации модели MVC библиотека Swing использует делегирование.
А сейчас рассмотрим на простом примере что же это за зверь такой – делегирование.
Например, класс SpaceShipControls имитирует модуль управления космическим кораблем. А Для построения космического корабля можно воспользоваться наследованием в классе SpaceShip.
Однако космический корабль не может рассматриваться как частный случай своего управляющего модуля — несмотря на то, что ему, к примеру, можно приказать двигаться вперед (forward()). Точнее сказать, что SpaceShip содержит SpaceShipControls, и в то же время все методы последнего предоставляются классом SpaceShip. Проблема решается при помощи делегирования:
Как видите, вызовы методов переадресуются встроенному объекту controls, а интерфейс остается таким же, как и при наследовании. С другой стороны, делегирование позволяет лучше управлять происходящим, потому что вы можете ограничиться небольшим подмножеством методов встроенного объекта.
Spasibo
ОтветитьУдалитьПожалуйста, хоть и через два года :)
УдалитьSpasibo, iz 2021 goda.
УдалитьПожалуйста из 2021 года. Кто бы мог подумать, что через шесть лет с миром будет такая фигня, как сейчас.
УдалитьШикарное объяснение! Спасибо огромное за Ваше время и труд!
ОтветитьУдалитьПожалуйста
УдалитьЕще скажите что это ваше обьяснение хд мне квжется что это брюс экель 😁
Удалитьв точку!
УдалитьКонечно он самый. Что мне было изобретать велосипед когда на спейсшипе можно было проехать :)
Удалитькруто рассказано, но вникаешь всё-равно долго Х_Х
ОтветитьУдалитьЗато можно получать удовольствие от освоения нового
ОтветитьУдалитьИз данного примера не понятно, чем композиция отличается от делегирования
ОтветитьУдалитьО, старый добрый Эккель)
ОтветитьУдалитьОн самый.
УдалитьНо как видно народ книги не очень то читает. Сейчас все проще в интернете найти.
УдалитьЧитаем, читаем) Эккеля как раз. Но сторонние источники, особенно такие объяснябельные, скажем так... разукрашивают серость печатного текста)
Удалить