===========
1、虚代理
根据需要创建开销很大的对象时,只有用到才创建;
2、保护代理
控制对原始对象的访问,比如过滤器;
3、智能指引
在访问对象时附加一些操作,比如对象没有引用时释放资源;
4、远程代理
为一个对象在不同的地址空间提供局部代理;
五、静态代理
======
静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者继承相同的父类。
我们经常去看电影,在电影的开始和结束阶段都会播放广告,这个可以给电影院带来经济效益,不同的电影可能对应不同的广告,但是同一个影片的广告基本上都是固定的,这就是静态代理,固定的,额外的;
1、接口IMovie
package designMode.advance.proxy;
public interface IMovie {
void play();
}
2、实现类Movie
package designMode.advance.proxy;
public class Movie implements IMovie {
@Override
public void play() {
System.out.println("您正在观看电影《速度与激情8》");
}
}
3、代理类MovieProxy
package designMode.advance.proxy;
public class MovieProxy implements IMovie {
Movie movie;
public MovieProxy(Movie movie) {
this.movie = movie;
}
@Override
public void play() {
advertising(true);
movie.play();
advertising(false);
}
private void advertising(boolean isBoforMovie){
if(isBoforMovie){
System.out.println("影片马上开始,素小暖入驻CSDN啦,快来关注我啊");
}else{
System.out.println("影片正片已经结束,马上彩蛋环节,不要离开哦,素小暖入驻CSDN啦,快来关注我啊");
}
}
public static void main(String[] args) {
Movie movie = new Movie();
IMovie movieProxy = new MovieProxy(movie);
movieProxy.play();
}
}
4、控制台输出