package StaticProxy;
/**
* @author 庞靖超
* @version V1.0
* @Package StaticProxy
* @description 静态代理模式
* @date 2021/8/24 15:42
*/
// 静态代理模式总结:
// 真实对象和代理对象都要实现同意接口
// 代理对象要代理真实角色
// 好处:
// 代理对象可以做很多真实对象做不了的事情
// 真实对象就专注做自己的事情
public class StaticProxy {
public static void main(String[] args) {
//创建真实角色,可使用接口
Marry you = new You();
//创建代理角色,代理角色往往要添加新的方法,不建议使用接口创建
WeddingCompany company = new WeddingCompany(you);
company.marry();
}
}
//接口
interface Marry {
void marry();
}
//真实角色
class You implements Marry {
@Override
public void marry() {
System.out.println("我结婚了");
}
}
//代理角色,需要持有真实角色的引用
class WeddingCompany implements Marry {
private Marry you;
public WeddingCompany(Marry you) {
this.you = you;
}
@Override
public void marry() {
before();
you.marry();
after();
}
private void after() {
System.out.println("结婚之后,收尾款");
}
private void before() {
System.out.println("结婚之前,布置婚礼现场");
}
} 从上面的例子可以看到,实现静态代理模式时有三个要素
1.真实角色(委托对象)
2.代理角色
3.共同实现的接口
对比以实现Runnable接口的形式创建多线程,可以发现,代理角色Thread类不需要我们创建,我们只需要写委托对象实现Runnable接口.把委托对象的引用传递给Thread,借助Thread对象来开启线程即可

京公网安备 11010502036488号