静态代理模式
代理对象和真实对象都实现同一接口,代理对象要代理真实角色。
好处:
- 代理对象能帮助我们完成一些我们完不成的事。
- 真实对象只需要专注自己的事。
例如我们结婚,需要婚庆公司帮助我们完成。此时我就是真实对象,婚庆公司就是代理对象,它能帮助我们搭建舞台,主持婚礼等。而我们只需要专注与新娘结婚。
public class Demo06 {
public static void main(String[] args) {
//创建真实对象你
You you = new You();
//创建婚庆公司,把你交给公司完成婚礼
new weddingCompany(you).happyMarry();
}
}
interface Marry{
void happyMarry();
}
//真实对象,你去结婚
class You implements Marry{
@Override
public void happyMarry() {
System.out.println("结婚了,超快乐");
}
}
//静态代理对象,帮助你完成结婚
class weddingCompany implements Marry{
private Marry you;
public weddingCompany(Marry you) {
this.you = you;
}
@Override
public void happyMarry() {
//结婚前帮助你布置现场
before();
you.happyMarry();
//结婚后,撤现场
after();
}
public void before(){
System.out.println("布置现场");
}
public void after(){
System.out.println("撤现场");
}
}
在java中通过实现Runnable接口开启多线程就是一个静待代理。因为Thread类也实现了Runnable接口。
public class Demo07 {
public static void main(String[] args) {
//这是一个真实对象
Demo08 demo08 = new Demo08();
//创建一个代理对象,并将真实对象交给代理对象
Thread thread = new Thread(demo08);
//通过代理对象去完成任务
thread.start();
}
}
class Demo08 implements Runnable{
@Override
public void run() {
System.out.println("这是一个真实对象");
}
}