Java:如何实现静态代理?

代理模式:由代理对象来帮你忙前忙后,你负责出现一下就好了。

静态代理模式:代理对象不可变,已经确定了的。


 

需要:

1.实现相同的接口。

2.真实角色。

3.代理角色,组合了真实角色(在代理角色里面加一个属性为真实对象,通过构造器获取)。

4.代理角色在共同的方法中调用真实角色的方法。


例子:

/**
 * 静态代理,测试
 */
public class StaticProxy {
    public static void main(String[] args) {
        new Me(new Zhangsan()).goBattle();
    }
}
//统一的接口:去打架
interface Battle{
    void goBattle();
}
//真实对象:去打架的人
class Zhangsan implements Battle{
    @Override
    public void goBattle() {
        System.out.println("张三:爷们要战斗!");
    }
}
//代理对象,为真实角色忙前忙后:武器提供者
class Me implements Battle{
    Battle someBody;
    public Me(Battle someBody){
        this.someBody=someBody;
    }
    @Override
    public void goBattle() {
        giveSome();
        someBody.goBattle();//灵魂在此
        returnSome();
    }
    //忙前
    void giveSome(){
        System.out.println("拿到一把武器!");
    }
    //忙后
    void returnSome(){
        System.out.println("打完了武器还掉。");
    }
}

测试结果:


 

总所周知:

1.Thread实现了Runnable接口

2.我自己的类 Mythread  也实现了Runnable接口,那肯定得重写它唯一的  run  方法啊。

3.Thread  里面有  Runnable  接口的对象:

4.Thread(通过start)调用run方法。

 

所以说,最经典的静态代理设计模式就是多线程的开启模式:

开启一个线程:new Thread(new Mythread()).start();

posted @ 2022-11-11 21:42  在博客做笔记的路人甲  阅读(169)  评论(0编辑  收藏  举报