静态代理模式
实现步骤
1.真实对象和代理对象需实现同一接口
2.代理对象要代理真实角色
例子:
一个赛车手需要去参加一场比赛,需要准备比赛用的车和买保险一系列的工作,这时候可以找一个车队去代理帮忙做这些赛前以及赛后的繁琐工作,而赛车手只需要比赛;
代码:
1.接口(比赛接口):
public interface Match {
//比赛方法
void goMatch();
}
2.赛车手类:
public class Participant implements Match {
@Override
public void goMatch() {
System.out.println("最牛的男人在比赛中!");
}
}
3.车队类:
public class Motorcade implements Match {
//代理的目标对象
private Match target;
public Motorcade(Match target) {
this.target = target;
}
@Override
public void goMatch() {
preMatch();
target.goMatch();
afterMatch();
}
//比赛前准备
void preMatch(){
System.out.println("车队准备了一辆车!");
}
//比赛后庆祝
void afterMatch(){
System.out.println("车队喝完酒后去沐足!");
}
}
4.测试主方法:
public static void main(String[] args) {
//创建赛车手实例
Participant participant = new Participant();
//将赛车手交给车队代理
Motorcade motorcade = new Motorcade(participant);
//车队调用比赛方法
motorcade.goMatch();
}
静态代理好处:
- 代理对象可以做真实对象做不了的事
- 真实对象专注做自己的事情