/**
* 代理模式:跟装饰器模式代码和机构一样,只是偏向不一样(装饰器是对被装饰类的功能增强,不会阻止被装饰器的原本功能),代理类强调的完全控制被代理类,
* 只有业务意义上的区别,实现模式是一样的:
* 一个接口,2个实现类,其中一个是代理类,代理类通过组合方式持有被代理类
*
*
*/
//父接口
public interface IRun {
void run();
}
//被代理类
public class Runner implements IRun {
@Override
public void run() {
System.out.println("运动员开跑...............");
}
}
//代理类
public class ProxyRunner implements IRun {
private IRun run;
@Override
public void run() {
Random random = new Random(2);
if(random.nextInt()%2==0){
run.run();
}
}
}
public class Test {
public static void main(String[] args) {
IRun proxyRunner = new ProxyRunner(new Runner());
proxyRunner.run();
}
}