代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一个代理以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用,可以添加额外的功能或限制对目标对象的直接访问。
// 抽象主题接口
public interface Translator {
void translate(String text);
}
// 具体主题:真正的翻译服务
public class ChineseTranslator implements Translator {
@Override
public void translate(String text) {
System.out.println("Translating from English to Chinese: " + text);
// 实际的翻译逻辑...
}
}
// 代理类:添加额外功能,比如日志记录
public class LoggingTranslator implements Translator {
private final Translator realTranslator;
public LoggingTranslator(Translator translator) {
this.realTranslator = translator;
}
@Override
public void translate(String text) {
System.out.println("Logging translation request...");
realTranslator.translate(text);
System.out.println("Finished logging.");
}
}
// 客户端
public class Client {
public static void main(String[] args) {
// 创建真实对象
Translator realTranslator = new ChineseTranslator();
// 创建代理对象,传递真实对象
Translator proxyTranslator = new LoggingTranslator(realTranslator);
// 客户端使用代理对象进行翻译
proxyTranslator.translate("Hello, world!");
}
}
想象你正在经营一家咖啡店,顾客通常会直接向服务员点单。这时,服务员就是咖啡师的代理,他们接收顾客的订单并将之传递给咖啡师制作。同时,服务员还可以在这个过程中做额外的事情,比如记录订单信息、确认库存等。这就是代理模式的一个简化示例:服务员就像是咖啡师的代理,负责管控对咖啡师服务的访问,并在必要时扩展附加功能。