Java多线程03:静态代理
真实对象和代理对象都要实现同一个接口,代理对象要代理真实角色
好处:代理对象可以做很多真实对象做不了的事情;真实对象专注做自己的事情
public class Main {
public static void main(String[] args) {
/**
* 通过代理对象来实现真实对象的方法
*/
new Proxy(new RealMovie()).play();
}
}
/**
* 代理对象和真实对象需要实现同一个接口
* 这样任何实现该接口的真实对象都可以被代理而无需修改代码
*/
interface Movie{
void play();
}
/**
* 真实对象(电影)
*/
class RealMovie implements Movie{
@Override
public void play() {
System.out.println("正在播放电影!");
}
}
/**
* 代理对象(电影院)
*/
class Proxy implements Movie{
/**
* 传入相同接口类型的对象进行代理
*/
Movie proxy;
public Proxy(Movie proxy) {
this.proxy = proxy;
}
public void BeforeAdv(){
System.out.println("电影院的第一个广告");
}
public void AfterAdv(){
System.out.println("电影院的第二个广告");
}
@Override
public void play() {
/**
* 代理方法中可以自定义功能
*/
BeforeAdv();
proxy.play();
AfterAdv();
}
}