静态代理
UML示意图
首先得有一个接口,通用的接口是代理模式实现的基础。这个接口我们命名为 Movie,代表电影播放的能力。
3 public interface Movie {
4 void play();
5 }
然后要有一个实现Movice接口的类和一个只是实现接口的代理类
public class RealMovie implements Movie {
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("您正在观看电影 《肖申克的救赎》");
}
}
这个表示影片 , 他实现了Movie接口,play()方法调用时,影片开始播放。
public class Cinema implements Movie {
RealMovie movie;
//代理对象
public Cinema(RealMovie movie) {
super();
this.movie = movie;
}
@Override
public void play() {
guanggao(true);
movie.play();
guanggao(false);
}
public void guanggao(boolean isStart){
if ( isStart ) {
System.out.println("电影马上开始了!");
} else {
System.out.println("电影马上结束了");
}
}
}
Proxy代理对象,Cinema就是Proxy代理对象,他有一个play()方法,他进行了一些相关业务处理,测试代码
public class ProxyTest {
public static void main(String[] args) {
RealMovie realmovie = new RealMovie();
Movie movie = new Cinema(realmovie);
movie.play();
}
}