Java多线程:静态代理
静态代理
- 真实对象和代理对象都要实现同一个接口
- 代理对象要代理真实角
- 优点:
- 代理对象可以做真实对象做不了的事
- 真实对象专注做自己的事
Runnable实现创建多线程的方法使用了静态代理,Runnable是函数式接口
public class StaticProxy {
public static void main(String[] args) {
//缩略为
// ApplicationCompany applicationCompany = new ApplicationCompany(new You());
// applicationCompany.ApplyPhd();
new ApplicationCompany(new You()).ApplyPhd();
//lambda表达式,代理与创建多线程相似
//Thread为代理
new Thread( ()-> System.out.println("申博士") ).start();
}
}
interface Phd{
void ApplyPhd();
}
//真实角色
class You implements Phd{
@Override
public void ApplyPhd() {
System.out.println("申请博士");
}
}
//代理角色
class ApplicationCompany implements Phd{
//代理->真实目标角色
private Phd people;
public ApplicationCompany(Phd people) {
this.people = people;
}
@Override
public void ApplyPhd() {
before();
this.people.ApplyPhd();//真实对象
after();
}
private void before() {
System.out.println("准备材料,提交申请");
}
private void after() {
System.out.println("申到学校,收尾款");
}