Sobes.tech
Junior — Middle

Можете ли да обясните какво представлява патърнът декоратор и какъв е неговият основен смисъл?

sobes.tech AI

Отговор от AI

Моделът «Декоратор» позволява динамично добавяне на нови отговорности към обекти, като ги обвива в други декораторски обекти без да променя оригиналния клас.

Основната идея е да се създаде обвивка около обекта, която реализира същия интерфейс и може да изпълнява допълнителна логика преди или след извикването на методите на оригиналния обект.

Това е полезно, когато трябва да разширите функционалността без наследяване и промяна на съществуващия код.

Пример в псевдокод:

interface Coffee {
    double cost();
}

class SimpleCoffee implements Coffee {
    public double cost() { return 5; }
}

class MilkDecorator implements Coffee {
    private Coffee coffee;
    public MilkDecorator(Coffee coffee) { this.coffee = coffee; }
    public double cost() { return coffee.cost() + 2; }
}

// Използване:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7

По този начин, декораторът позволява гъвкаво добавяне на функционалност към обекти по време на изпълнение.