它允许对象将任务委托给另一个对象来执行。委托模式的核心思想是将某个对象的行为或责任委托给另一个对象,以实现更好的代码复用和灵活性。
// 定义一个接口,表示打印行为
interface Printer {
void print(String message);
}
// 实现具体的打印行为
class ConsolePrinter implements Printer {
@Override
public void print(String message) {
System.out.println("Console: " + message);
}
}
class FilePrinter implements Printer {
@Override
public void print(String message) {
// 假设将消息写入文件
System.out.println("File: " + message);
}
}
// 委托者类,持有一个Printer对象
class PrinterDelegator {
private Printer printer;
public PrinterDelegator(Printer printer) {
this.printer = printer;
}
public void setPrinter(Printer printer) {
this.printer = printer;
}
public void print(String message) {
printer.print(message);
}
}
// 使用委托模式
public class DelegatePatternExample {
public static void main(String[] args) {
Printer consolePrinter = new ConsolePrinter();
Printer filePrinter = new FilePrinter();
PrinterDelegator delegator = new PrinterDelegator(consolePrinter);
delegator.print("Hello, World!");
// 动态改变委托对象
delegator.setPrinter(filePrinter);
delegator.print("Hello, World!");
}
}