java中的Proxy模式

zjun Lv4

什么是代理模式

代理(Proxy)模式,顾名思义就是对象之间不直接发生联系,而是通过中间的代理人进行沟通。这种关系在现在的娱乐圈中普遍存在:明星通常都有经纪人来代理自己的演出事宜,而不是直接去联系演出商。下面就通过这个实际中的例子来说明代理模式。

类图

关系类图

一个简单的例子

演艺人士:包括经纪人和明星,都属于娱乐圈中人。

1
2
3
4
5
6
7
8
9
10
11
/**
* 演艺人士
*
* @author zJun
*/
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
/**
* 经纪人(参考《Java与模式》- "代理(Proxy)模式"一章部分代码)
*
* @author zJun
*
*/
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
/**
* 明星
*
* @author zJun
*
*/
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
/**
* 赞助商: 与经纪人联系安排演出事宜
*
* @author zJun
*/
public class Patron {

/**
* @param args
*/
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与模式》 阎宏 电子工业出版社

  • 标题: java中的Proxy模式
  • 作者: zjun
  • 创建于 : 2006-03-21 23:34:00
  • 更新于 : 2023-11-25 00:23:35
  • 链接: https://zjun.site/2006/03/48e6ba8e175d.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论