什么是代理模式
代理(Proxy)模式,顾名思义就是对象之间不直接发生联系,而是通过中间的代理人进行沟通。这种关系在现在的娱乐圈中普遍存在:明星通常都有经纪人来代理自己的演出事宜,而不是直接去联系演出商。下面就通过这个实际中的例子来说明代理模式。
类图
一个简单的例子
演艺人士:包括经纪人和明星,都属于娱乐圈中人。
1 2 3 4 5 6 7 8 9 10 11
|
public interface Artist {
public void show(String showType); }
|
经纪人:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
public class Broker implements Artist, InvocationHandler {
private String SIGN = " [经纪人] " ;
private Star star;
public void subcontract() { System.out.println(SIGN + " 签订和约 " ); }
public void show(String showType) { subcontract();
if (star == null ) { star = new Star(); } star.show(showType);
payTax(); }
public void payTax() { System.out.println(SIGN + " 演出后交税 " ); } }
|
明星:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class Star implements Artist {
private String SIGN = " [明星] " ;
public void show(String showType) { System.out.println(SIGN + showType); }
}
|
赞助商:通过联系经纪人安排明星演出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public class Patron {
public static void main(String[] args) { Broker broker = new Broker(); broker.show( " 演电影 " ); broker.show( " 拍电视 " ); broker.show( " 出唱片 " ); broker.show( " 演唱会 " ); }
}
|
[运行结果]:
1 2 3 4 5 6 7 8 9 10 11 12
| [ 经纪人 ] 签订和约 [ 明星 ] 演电影 [ 经纪人 ] 演出后交税 [ 经纪人 ] 签订和约 [ 明星 ] 拍电视 [ 经纪人 ] 演出后交税 [ 经纪人 ] 签订和约 [ 明星 ] 出唱片 [ 经纪人 ] 演出后交税 [ 经纪人 ] 签订和约 [ 明星 ] 演唱会 [ 经纪人 ] 演出后交税
|
参考资料
《Java与模式》 阎宏 电子工业出版社