Git Hub
коротко

Замена наследования делегированием

20 февраля 2017, 16:58

Проблема

У вас есть подкласс, который использует только часть методов суперкласса или не хочет наследовать его данные.

Решение

Создайте поле и поместите в него объект суперкласса, делегируйте выполнение методов объекту-суперклассу, уберите наследование.

Достоинства

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

Поделиться
Популярное