Sobes.tech
Junior
67

Приведи пример использования паттерна декоратор

Answer from AI

sobes.tech AI

Паттерн "Декоратор" позволяет динамически добавлять объектам новые обязанности, оборачивая их в другие объекты-декораторы, не изменяя исходный код.

Пример на Java — простой декоратор для текстового вывода, который добавляет кавычки вокруг строки:

// Интерфейс компонента
interface Text {
    String getContent();
}

// Конкретный компонент
class SimpleText implements Text {
    private String text;
    public SimpleText(String text) {
        this.text = text;
    }
    public String getContent() {
        return text;
    }
}

// Абстрактный декоратор
class TextDecorator implements Text {
    protected Text innerText;
    public TextDecorator(Text innerText) {
        this.innerText = innerText;
    }
    public String getContent() {
        return innerText.getContent();
    }
}

// Конкретный декоратор
class QuotedText extends TextDecorator {
    public QuotedText(Text innerText) {
        super(innerText);
    }
    public String getContent() {
        return '"' + super.getContent() + '"';
    }
}

// Использование
public class Main {
    public static void main(String[] args) {
        Text myText = new SimpleText("Привет");
        Text quoted = new QuotedText(myText);
        System.out.println(quoted.getContent());  // Выведет: "Привет"
    }
}

Таким образом, декоратор добавляет функциональность (кавычки) без изменения исходного класса SimpleText.