一、什么是静态代理模式
代理的概念:生活中的代理是很常见的,比如代购、律师、中介等,他们都有一个共性就是帮助被代理人处理一些前前后后的事情。而被代理人只需要专注做自己要做的那部分事情就可以了。
Java中的代理也是类似的,代理模式可以实现帮助被代理者完成一些前期的准备工作和后期的善后工作,但是核心的业务逻辑仍然是由被代理者完成。
二、静态代理模式的构成
静态代理模式由三个部分构成:
.一个公共的接口
.一个代理角色
.一个被代理角色
三、构建一个简单的静态代理模式
3.1创建一个公共接口,然后定义一个方法:
//结婚的接口,接口中定义一个happyMarry的方法
public interface Marry{
void happyMarry();//愉快的结婚
}
3.2创建一个代理角色:
//创建一个代理角色(婚庆公司),婚庆公司帮你布置婚礼现场以及婚礼后的收尾工作
class WeddingCompany implements Marry{
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void happyMarry() {
ready();
this.target.happyMarry();
after();
}
private void ready(){
System.out.println("婚礼策划");
}
private void after(){
System.out.println("收尾工作");
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210426181419374.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phdmFlRUVzZQ==,size_16,color_FFFFFF,t_70)
3.3创建一个被代理角色:
//创建类You,你就是被代理角色,快结婚了,恭喜恭喜
class You implements Marry{
@Override
public void happyMarry() {
System.out.println("下个月我要去和我的爱人结婚了。。。哈哈哈");
}
}
完成以上三个步骤之后,Java的静态代理模式就写好了,接下来我们就来应用测试一下。
**代理模式的优点:**被代理类只需要专注于自己的核心代码即可,剩下的交给代理类就可以了,使得代码更加简洁,分工明确。
**缺点:**一个真实角色就会产生一个代理角色,代码量翻倍了