静态代理(Thread)
实现静态代理对比Thread
案例:婚介所办理结婚
package com.xiaoxianshuo.proxy;
public class StaticProxy {
public static void main(String[] args) {
You you = new You(); //你要结婚
//Thread
new Thread(()-> System.out.println("我爱你!")).start();
new WeddingCompany(new You()).NewMarry();
//静态代理
//WeddingCompany weddingCompany = new WeddingCompany(you);
//weddingCompany.NewMarry();
}
}
//1.定义结婚接口
interface Marry{
//新婚方法
void NewMarry();
}
//2.结婚接口实现类重写结婚方法(真实角色,你去结婚)
class You implements Marry{
@Override
public void NewMarry(){
System.out.println("我要结婚了,超开心!");
}
}
//3.婚庆公司(代理角色,帮助你结婚)
class WeddingCompany implements Marry{
private Marry target;
public WeddingCompany(Marry target){
this.target = target;
}
@Override
public void NewMarry(){
//结婚之前
after();
this.target.NewMarry();
//结婚之后
before();
}
public void after(){
System.out.println("结婚之前,布置新婚现场!");
}
public void before(){
System.out.println("结婚之后,收尾款!");
}
}
运行结果:
我爱你!
结婚之前,布置新婚现场!
我要结婚了,超开心!
结婚之后,收尾款!
静态代理总结:
- 真实对象要和代理对象实现同一个接口
- 代理对象要代理真是角色
好处:
- 代理对象可以做很多真实对象做不了的事情
- 真实对象专注做自己的事情

浙公网安备 33010602011771号