静态代理
- 真实对象和代理对象都要实现同一个接口
- 代理对象要代理真实角色
- 静态代理相当于多线程底部的实现原理
好处:
- 代理对象可以做好多真实对象做不了的事情
- 真实对象可以专注做自己的事情
package thread.demo02;
/*静态代理模式总结:
真实对象和代理对象都要实现同一个接口
代理对象要代理真实角色
好处:
代理对象可以做好多真实对象做不了的事情
真实对象可以专注做自己的事情
*/
public class StaticProxy {
public static void main(String[] args) {
/*You you = new You();
you.HappyMarry();
*/
WeddingCompany weddingCompany = new WeddingCompany(new You());
weddingCompany.HappyMarry();
/*
new WeddingCompany(new You()).HappyMarry();相当于上述两行代码简写
new Thread(()->System.out.println("我爱你")).start(); lamda表达式
两者对比,静态代理相当于多线程底部的实现原理
*/
}
}
interface Marry{
void HappyMarry();
}
//真实角色,你去结婚
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("小李要结婚了");
}
}
//代理角色,帮助你结婚
class WeddingCompany implements Marry{
//真实目标角色
private Marry target;
public WeddingCompany(Marry targe) {
this.target = targe;
}
@Override
public void HappyMarry() {
before();
this.target.HappyMarry();//这就是真实对象
affer();
}
private void affer() {
System.out.println("结婚之后很痛苦");
}
private void before() {
System.out.println("结婚之前,布置会场");
}
}