通过追女孩子案例模拟Thread类、Runnable接口、自定义线程类之间的关系

我们知道,在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();
	}
	
}

猜你喜欢

转载自blog.csdn.net/pengzonglu7292/article/details/84998443
今日推荐