概述
自己需要做的事,叫别人去帮你做的更好(加料)
比如:你要结婚,找一个公司代理结婚,结婚的人还是你,但是前后增加了好事,布置炫酷的现场,收尾款等
使用方法
这里用结婚流程来说
- 定义接口,即结婚的业务
- 定义结婚对象实现接口中的方法
- 定义代理结婚的公司实现接口中的方法,并传入代理对象,调用代理对象
- 增加前后的一些布置
- 创建代理类负责启动
实例
模拟结婚代理
/**
* @function 静态代理模式
* @class StaticProxy 启动代理
* Marry 结婚接口
* You 结婚对象
* WeddingCompany 公司代理对象
*/
public class StaticProxy {
public static void main(String[] args) {
//Thread 也是一个代理类 接口Runnable
new Thread( ()-> System.out.println("I love dudu")).start();
// 和线程对比
WeddingCompany weddingCompany = new WeddingCompany(new You());
weddingCompany.HappyMarry();
}
}
interface Marry{
// 人间四大喜事
// 久旱逢甘露
// 他乡遇故知
// 洞房花烛夜
// 金榜题名时
void HappyMarry();
}
//结婚接口
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("钢镚核恒要结婚了!");
}
}
//公司代理
class WeddingCompany implements Marry {
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void HappyMarry() {
before();
this.target.HappyMarry(); //调用的是传入的代理对象本身
after();
}
private void before() {
System.out.println("结婚之前,布置现场");
}
private void after() {
System.out.println("结婚之后,收尾款");
}
}
一句话
用同样的接口 把你要做的事情 加上大餐 的包装起来使用,更加舒服,省去烦恼,坐等安排。