结构型模式(四):Proxy ( 代理模式 )
代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。
例子:
1 interface Demo{
2 public void action();
3 }
4
5 class RealDemo implements Demo{
6 @Override
7 public void action() {
8 System.out.println("这是被真实实现类");
9 }
10 }
11
12 class ProxyDemo implements Demo{
13 private Demo real;
14 public ProxyDemo(){
15 System.out.println("这是代理类");
16 real=new RealDemo();
17 }
18 @Override
19 public void action() {
20 System.out.println("代理开始");
21 real.action();
22 System.out.println("代理结束");
23 }
24 }
25
26 public class Test {
27 public static void main(String[] args) {
28 Demo demo=new ProxyDemo();
29 demo.action();
30 }
31 }