一、简介
代理:代理对象主要用来拦截被代理对象的访问
- 代理对象可以理解为明星的经纪人,被代理对象可以理解为某个明星
- 代理对象要持有真实业务对象,即在代理类中创建被代理类的对象
- 代理对象和被代理对象,具备相同的行为方法. 实现同一个接口
- 代理对象拦截被代理对象的访问,可以修改访问的参数 返回值 甚至拦截访问
二、代码
1、启动类
代码语言:javascript复制public class StaticProxy {
public static void main(String[] args) {
new WeddingCompany(new You()).happyMarry();
}
}
2、定义接口
代码语言:javascript复制interface Marry {
void happyMarry();
}
3、真实角色
代码语言:javascript复制// 真实角色
class You implements Marry {
@Override
public void happyMarry() {
System.out.println("我本人结婚了");
}
}
4、代理角色
代码语言:javascript复制//代理角色
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("婚后收拾");
}
}
三、完整代码
代码语言:javascript复制public class StaticProxy {
public static void main筛选出 (String[] args) {
new WeddingCompany(new You()).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() {
ready();
this.target.happyMarry();
after();
}
private void ready() {
System.out.println("婚前布置");
}
private void after() {
System.out.println("婚后收拾");
}
}