成都网站建设优秀公司怎样免费推广自己的网站
当使用静态代理模式时,我们会有一个真实的对象(RealSubject),一个代理对象(ProxySubject),代理对象将请求转发给真实对象,并可以在请求前后执行额外的操作。
真实对象和代理对象要实现同一个接口
代理对象要代理真实角色
比如 找中介买房
真实对象:买家
代理对象:中介
package org.example;public class StaticProxy {public static void main(String[] args) {He he=new He(new You());he.HappyBuy();}
}interface Buy{void HappyBuy();
}class You implements Buy{@Overridepublic void HappyBuy() {System.out.println("xxx要买房了");}
}
//代理对象,帮助你买房
class He implements Buy{private Buy target;public He(Buy target){this.target=target;}@Overridepublic void HappyBuy() {before();this.target.HappyBuy();after();}public void before(){System.out.println("带客户看房,签订买卖合同,支付房款");}public void after(){System.out.println("搬进新房");}
}
总结:
首先创建了一个接口(buy ),并且定义了一个方法(HappyBuy )
真实对象(You )调用 HappyBuy方法
class You implements Buy{@Overridepublic void HappyBuy() {System.out.println("xxx要买房了");}
}
代理对象(He )调用 HappyBuy方法
class He implements Buy{private Buy target;public He(Buy target){this.target=target;}@Overridepublic void HappyBuy() {before();this.target.HappyBuy();after();}public void before(){System.out.println("带客户看房,签订买卖合同,支付房款");}public void after(){System.out.println("搬进新房");}
}
创建主函数实现
将真实对象丢进代理对象,让代理对象去执行
He he=new He(new You());
public class StaticProxy {public static void main(String[] args) {He he=new He(new You());he.HappyBuy();}
}