Я знаю, как реализовать и использовать шаблон декоратора без Spring.
Поскольку в этом шаблоне вы сами управляете процессом создания компонентов и можете выполнять динамическое добавление поведения.
Ниже приведеноПример реализации без использования Spring:
public class SimpleDecoratorApp {
public static void main(String[] args) {
SimplePrinter simplePrinter = new SimplePrinter();
Printer decorated = new UpperCasePrinterDecorator(
new AddAsterisksPrinterDecorator(simplePrinter)
);
decorated.print("hello"); // *** HELLO ***
}
}
interface Printer {
void print(String msg);
}
class SimplePrinter implements Printer {
@Override
public void print(String msg) {
System.out.println(msg);
}
}
abstract class PrinterDecorator implements Printer {
protected Printer printer;
public PrinterDecorator(Printer printer) {
this.printer = printer;
}
}
class UpperCasePrinterDecorator extends PrinterDecorator {
public UpperCasePrinterDecorator(Printer printer) {
super(printer);
}
@Override
public void print(String msg) {
String s = msg.toUpperCase();
this.printer.print(s);
}
}
class AddAsterisksPrinterDecorator extends PrinterDecorator {
public AddAsterisksPrinterDecorator(Printer printer) {
super(printer);
}
@Override
public void print(String msg) {
msg = "*** " + msg + " ***";
this.printer.print(msg);
}
}
Меня интересует, как реализовать тот же пример, но с помощью бобов Spring.
Потому что я не совсем понимаю, каксохраняйте гибкость в возможности простого переноса на любое количество декораторов.
Потому что, насколько я понимаю, он будет реализован фиксированным в каком-то отдельном компоненте, и мне придется создавать десятки различных отдельных компонентов с комбинациямидекораторы мне нужны.