我们知道,在Thread类、Runnable接口、自定义线程类之间实现了静态代理的设计模式,以下进行简单的模拟,方便我们对线程和静态代理的一个更加具象的认识。
被人追接口beiRenZhui(Runnable):
/*
* 本接口是被人追接口,每一个女孩子都有被人追的特性,
* 所以都要实现这个接口
* 本接口就相当于Runnable接口
*/
public interface beiRenZhui {
void maihua();
void maizuanjie();
}
媒婆类(Thread)
/*
* 媒婆要帮助男生追女孩子,就必须了解女孩子,
* 所以媒婆类MeiPo也要具有被人追特性,实现被人追接口
* 本类相当于Thread类,充当代理作用
*
* MeiPo类实现Runnable接口,相当于Thread类实现Runnable接口
*/
public class MeiPo implements beiRenZhui {
/*
* 这局代码相当于Thread类源码中的
* private Runnable target;
*/
private beiRenZhui brz;
/*
* 这句代码相当于Thread类源码中的
* public Thread(Runnable target) {
* init(null, target, "Thread-" + nextThreadNum(), 0);
*}
*/
public MeiPo(beiRenZhui brz) {
this.brz=brz;
}
@Override
public void maihua() {
brz.maihua();
}
@Override
public void maizuanjie() {
brz.maizuanjie();
}
}
女孩子类Zhao(自定义线程类):
/*
* 本类是被追的女孩子的类,女孩子都有被人追的属性
* 相当于自定义的线程类,都要实现Runnable接口
*/
public class Zhao implements beiRenZhui {
@Override
public void maihua() {
System.out.println("我喜欢蓝色妖姬!");
}
@Override
public void maizuanjie() {
System.out.println("我喜欢I。。。。do");
}
}
追女孩子的男生类Yang(测试类):
/*
* 追女孩子的男生类
*/
public class Yang {
public static void main(String[] args) {
/*
* 实例化一个MeiPo对象,与实例化一个Thread对象相对应。
* 构造器中传入要追的女孩子的实例,相当于在Thread的构造器中传入
* 一个自定义的线程类对象
*/
MeiPo mp=new MeiPo(new Zhao());
/*
* 表面上给媒婆买花买钻戒,实际上给要追的女孩子买花买钻戒
*/
mp.maihua();
mp.maizuanjie();
}
}