代理模式(proxy):为其他对象提供一种代理以控制对这个对象的访问。
代理模式说白了就是“真是对象”的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途。
示例代码:
先写一个业务接口,在写业务具体的类并implements业务接口,再写一个代理对象类并implements业务接口,个人感觉与模板模式有点类似。
public class Demo {
public static void main(String[] args) {
Action userAction = new UserAction(); //真实的业务对象
ActionProxy proxy = new ActionProxy(userAction);
proxy.doAction();
}
}
//代理对象
//用代理记录用户工作的时间
class ActionProxy implements Action{
private Action target; //被代理的对象
public ActionProxy(Action target){
this.target = target;
}
@Override
public void doAction() {
long startTime = System.currentTimeMillis();
target.doAction();//执行真业务
long endTime = System.currentTimeMillis();
System.out.println("共耗时:"+(endTime-startTime));
}
}
//业务接口
interface Action{
public void doAction();
}
//业务具体的实现类
class UserAction implements Action{
@Override
public void doAction() {
for(int i =0 ;i<1000;i++)
System.out.println("用户开始工作"); }
}