模拟静态代理 -- 洞房花烛夜

学习线程的 Runnable 我们知道我们需要 Thread 代理,

为什么需要代理?因为很重要,呵呵。举个例子,当你结婚的时候,办婚礼的时候一般都会请个主持人,还有很大可能就是会找婚庆公司。你一个人总不能又结婚又当主持人又负责拍摄你那美美的婚礼的,是吧。

所以,就来模拟一下代理(以 结婚 这个为例子,毕竟人生四大喜事之一:久旱逢甘雨,他乡遇故知,洞房花烛夜,金榜题名时)

首先,我们先定义一个接口,接口呢...通俗的说就是为了约束双方行为的,按照这里的例子,就是婚庆公司的工作就是安排婚礼,而你的工作就是 与你的爱人完成这场仪式,你们要实现的目标都是 结婚!

interface Marry {
	public abstract void happyMarry();
}

随后,是你结婚,故这里称之为 Me 类

//真实角色
class Me implements Marry {
	@Override
	public void happyMarry() {
		System.out.println("开开森森的结婚~~~");
	}
}

随后,就是婚庆公司的活了

//代理角色
class WeddingCompany implements Marry{
	
	private Me target;
	
	public WeddingCompany(Me target) {
		this.target = target;
	}
	
	@Override
	public void happyMarry() {
		ready();
		this.target.happyMarry();
		after();
	}
	
	public void ready() {
		System.out.println("布置场景~~~");
	}
	
	public void after() {
		System.out.println("进洞房啦~~~");
	}
}

最后,将要结婚的人和婚庆公司联系起来

public class StaticProxy {
	public static void main(String[] args) {
		new WeddingCompany(new Me()).happyMarry();
	}
}

附上完整代码:

package Thread;

public class StaticProxy {
	public static void main(String[] args) {
		new WeddingCompany(new Me()).happyMarry();
	}
}

interface Marry {
	public abstract void happyMarry();
}

//真实角色
class Me implements Marry {
	@Override
	public void happyMarry() {
		System.out.println("开开森森的结婚~~~");
	}
}

//代理角色
class WeddingCompany implements Marry{
	
	private Me target;
	
	public WeddingCompany(Me target) {
		this.target = target;
	}
	
	@Override
	public void happyMarry() {
		ready();
		this.target.happyMarry();
		after();
	}
	
	public void ready() {
		System.out.println("布置场景~~~");
	}
	
	public void after() {
		System.out.println("进洞房啦~~~");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值