代理模式(Proxy Pattern)定义:对其他对象提供一种代理以控制对这个对象的访问。
代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。代理模式经常在以下情景中使用:
1.代理一些开销很大的对象,这样便能迅速返回,进行其它操作,只有在真正需要时才实例化;
2.安全控制、同步控制,缓存处理结果,缓存初始化开销很大的对象,统计对象的使用以及异常处理等方面。
3.分布式对象访问控制,使得客户对象使用本地对象一样使用分布式对象。
为了保证客户对象透明地使用代理对象,代理类和实际类具有一致的接口。
package com.alex.proxypattern;
public class ServiceProxy implements Service{
@Override
public String hello() {
operation();
return "Server say hello ... ";
}
public void operation(){
System.out.println("connect to the server ... ");
System.out.println("process data in the server ... ");
System.out.println("get the result from the server ...");
}
}
package com.alex.proxypattern;
public interface Service {
String hello();
}
package com.alex.proxypattern;
public class ServiceImpl implements Service{
@Override
public String hello() {
// TODO Auto-generated method stub
return "Server say hello ... ";
}
}
package com.alex.proxypattern;
public class Client {
public static void main(String[] args) {
Service service = new ServiceProxy();
String result = service.hello();
System.out.println(result);
}
}
运行结果:
connect to the server ...
process data in the server ...
get the result from the server ...
Server say hello ...
注:本文大部分内容点来自刘济华的《漫谈设计模式》