Декоратор — це структурний патерн, який дозволяє додавати «на льоту» нові поведінки об’єктам, розміщаючи їх в об’єктах-обгортках.
Декоратор дозволяє загортати об’єкти безліч разів завдяки тому, що і обгортки, і реальні об’єкти, що загортаються, мають спільний інтерфейс.
Концептуальний приклад
pizza.go: Інтерфейс компонента
veggieMania.go: Конкретний компонент
tomatoTopping.go: Конкретний декоратор
cheeseTopping.go: Конкретний декоратор
main.go: Клієнтський код
output.txt: Результат виконання