[GoF23] java中的Proxy模式
代理(Proxy)模式,顧名思義就是對象之間不直接發生聯系,而是通過中間的代理人進行溝通。這種關系在現在的娛樂圈中普遍存在:明星通常都有經紀人來代理自己的演出事宜,而不是直接去聯系演出商。下面就通過這個實際中的例子來說明代理模式。
首先畫出關系類圖:

演藝人士:包括經紀人和明星,都屬于娛樂圈中人。
/**?*/
/**
?*?演藝人士
?*?
?*?
@author
?zJun
?
*/
public
?
interface
?Artist?
{

????
/**?*/
/**
?????*?演出活動
?????
*/
????
public
?
void
?show(String?showType);
}
經紀人:
/**?*/
/**
?*?經紀人(參考《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?
+
?
"
演出后交稅
"
);
????}
}
明星:
/**?*/
/**
?*?明星
?*?
?*?
@author
?zJun
?*?
?
*/
public
?
class
?Star?
implements
?Artist?
{

????
private
?String?SIGN?
=
?
"
[明星]
"
;


????
public
?
void
?show(String?showType)?
{
????????System.out.println(SIGN?
+
?showType);
????}
}
贊助商:通過聯系經紀人安排明星演出
/**?*/
/**
?*?贊助商:?與經紀人聯系安排演出事宜
?*?
?*?
@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(
"
演唱會
"
);
????}
}
[運行結果]:
[
經紀人
]
簽訂和約
[
明星
]
演電影
[
經紀人
]
演出后交稅
[
經紀人
]
簽訂和約
[
明星
]
拍電視
[
經紀人
]
演出后交稅
[
經紀人
]
簽訂和約
[
明星
]
出唱片
[
經紀人
]
演出后交稅
[
經紀人
]
簽訂和約
[
明星
]
演唱會
[
經紀人
]
演出后交稅
參考資料:
《Java與模式》 閻宏 電子工業出版社
首先畫出關系類圖:

演藝人士:包括經紀人和明星,都屬于娛樂圈中人。















經紀人:



























































明星:




















贊助商:通過聯系經紀人安排明星演出

























[運行結果]:












參考資料:
《Java與模式》 閻宏 電子工業出版社
posted on 2006-03-21 23:34 zJun's帛羅閣 閱讀(4208) 評論(4) 編輯 收藏 所屬分類: 設計模式