学习线程的 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("进洞房啦~~~");
}
}