目录
一、java中的代理模式
定义
给目标对象提供一个代理对象,并且由代理对象控制目标对象的引用
实现代理的方式有静态代理和动态代理
目的
1.功能增强:通过代理业务对原有业务进行加强
2.控制访问:通过代理对象的方式间接访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性
相关概念
目标类:原对象,我们需要代理对象控制它的访问,拓展其功能
代理类:代理模式产生的对象,是原对象替身,在原有基础上增强业务
二、静态代理
静态代理的特点
1.代理类是自己手动实现的
2.代理类所代理的目标类是固定的
利用接口实现静态代理
代码实现
public class StaticProxy {
public static void main(String[] args) {
//将目标对象放入代理对象
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("结婚之后,收尾款");
}
}