Я должен указать, что Шаблон Decorator
не Decoration
, и я соответственно отредактировал текст.
Некоторые из классических шаблонов находят лучшие способы, чем наследование, для изменения поведения классов. Примеры: Strategy
, Composite
, Chain of Responsibility
и, конечно, Decorator
. Фактически 3 из вышеперечисленного работают, создавая связанные списки объектов, которые сотрудничают, чтобы сделать что-то «сложное», что было бы трудно, неэффективно, используя наследование. Используя шаблоны, вы можете создавать коллекции объектов для выполнения сложного поведения во время выполнения, объединяя / внедряя несколько объектов.
Смысл всего этого в том, что вы можете не знать во время компиляции, какое сложное поведение необходимо, и это может зависеть от входных данных, конфигураций и т. Д. Это требует гибкого способа создания экземпляров и объединения классов во время выполнения таким образом, чтобы было бы практически невозможно во время компиляции.
Авторы цитат в вашем вопросе выражали то же самое. то есть, что наследование не является гибким способом построения сложного поведения, которое может быть неизвестно до времени выполнения.