簡體中文 | 繁體中文

大話設計模式-----第75章


司命 寶寶不要爸:總裁的1元嬌妻 總統先生,請和平離婚 無愛承婚 神奇透視眼 魔法學院:最後的女巫 丐無雙之執掌天下 前任無雙 涅槃真仙 天涯俠侶 重生傻妃御夫有術 網遊之戰爭領主 星界王者 冷醫虐 半點呼吸 重生之不可能的替身 金牌女影衛 無恥天神混跡校園 林想的重生日子 火影之路之陰陽師的崛起
第75章

小A:“師兄,如果能舉個例子的話,那就更好了。”

大B:“好。沒問題的。那就舉個通俗的模式吧!就拿一個男人和女人透過媒人約會的例子來實現這種設計模式吧。”

1、明確,男人和女人如果約會,假設男方提出約會(女方提出過程類似)。如果沒有媒人,該過程如下:

A、男方如果想和女方約會

B、首先請示自己的父母(假設是封建家庭哦……),

C、然後通知女方

D、女方需要請示女方父母,是否同意約會。

弊端:需要男方交換的物件太多,且關係複雜,當隨著男女之間的交往的複雜,會涉及到更多複雜的交換,雙方父母的交換也很更復雜,使得四個物件(男、女、男方家長、女方家長)關係複雜,難以控制。

模式改進:採取媒人做‘中介者’-模式,將變得簡單,其中無論那一個人有什麼要求,請求,只需要告訴‘媒人’,至於該請求需要告訴誰,和誰交換,只有媒人知道。

//模擬程式碼類如下:

packagemeditator;

/**

*/

publicclassMan{

privateMatchmakermat;//媒人

publicMan(Matchmakermat){

this.mat=mat;

mat.registeMan(this);//把自己在媒人那裡註冊(宣告)

}

publicstaticvoidmain(String[]args){

}

/**

*考慮是否同意

*@return

*/

publicbooleanthinking(Stringsays){

System.out.println(“男人考慮:我該不該同意呢……”);

if(says.length()>5){

System.out.println(“我同意了”);

returntrue;

}

else{

System.out.println(“我不同意。”);

returnfalse;

}

}

/**

*提出約會

*男人提出約會,只需要告訴媒人,由媒人負責跟其他人互動。

*@paramsays

*/

publicvoidtryst(Stringsays){

System.out.println(男人提出約會請求,說:+says);

mat.doManTryst(says);

}

}

packagemeditator;

/**

*《p》Title:男方家長類《/p》

*《p》Description:《/p》

*@version1.0

*/

publicclassManParent{

privateMatchmakermat;//媒人類

publicManParent(Matchmakermat){

this.mat=mat;

mat.registeManParent(this);//把自己在媒人那裡註冊(宣告)

}

}

/**

*考慮是否同意

*@return

*/

publicbooleanthinking(Stringsays){

System.out.println(“男方父母考慮:我們做父母的該不該同意呢……”);

if(says.length()>5){

System.out.println(“我們做父母的同意了”);

returntrue;

}

else{

System.out.println(“我們做父母的不同意。”);

returnfalse;

}

}

}

/////////////////////////////////////////////////////////////

packagemeditator;

/**

*《p》Title:女人類《/p》

*《p》Description:《/p》

*/

publicclassWoman{

privateMatchmakermat;//媒人

publicWoman(Matchmakermat){

this.mat=mat;

mat.registeWoman(this);//把自己在媒人那裡註冊(宣告)

}

/**

*考慮是否同意

*@return

*/

publicbooleanthinking(Stringsays){

System.out.println(“女人考慮:我該不該同意呢……”);

if(says.length()>5){

System.out.println(“我同意了”);

returntrue;

}

else{

System.out.println(“我不同意。”);

returnfalse;

}

}

/**

*提出約會

*女人提出約會,只需要告訴媒人,由媒人負責跟其他人互動。

*@paramsays

*/

publicvoidtryst(Stringsays){

System.out.println(女人提出約會請求,說:+says);

mat.doWomanTryst(says);

}

}

////////////////////////////////////////////////////////

packagemeditator;

/**

*《p》Title:女方家長類《/p》

*《p》Description:《/p》

*/

publicclassWomanParent{

privateMatchmakermat;//媒人類

publicWomanParent(Matchmakermat){

this.mat=mat;

mat.registerWomanParent(this);//把自己在媒人那裡註冊(宣告)

}

/**

*考慮是否同意

*@return

*/

publicbooleanthinking(Stringsays){

System.out.println(“女方父母考慮:我們做父母的該不該同意呢……”);

if(says.length()>5){

System.out.println(“我們做父母的同意了”);

returntrue;

}

else{

System.out.println(“我們做父母的不同意。”);

returnfalse;

}

}

}

///////////////////////////////////////////////////////////////

packagemeditator;

/**

*《p》Title:媒人類——中介者《/p》

*《p》Description:《/p》

*@version1.0

*/

publicclassMatchmaker{

privateManman;//男人

privateWomanwoman;//女人

privateManParentmanp;//男方父母

privateWomanParentwomanp;//女方父母

Matchmaker(){

}

publicstaticvoidmain(String[]args){

Matchmakermatchmaker1=newMatchmaker();

}

/**

*媒人處理男人提出的約會,

*男人提出約會,則只需要把該問題告訴媒人,

*由媒人負責去跟其女方,女方父母,男方家長互動

*@paramsays

*/

publicvoiddoManTryst(Stringsays){

System.out.println(“媒人開始處理約會問題開始”);

womanp.thinking(says);

System.out.println(“媒人處理約會問題結束,根據同意的結果做其他處理”);

}

/**

*媒人處理女人提出的約會,

*由媒人負責去跟男方,女方父母,男方家長互動

*@paramsays

*/

publicvoiddoWomanTryst(Stringsays){

System.out.println(“媒人開始處理約會問題開始”);

man.thinking(says);

manp.thinking(says);

womanp.thinking(says);

System.out.println(“媒人處理約會問題結束,根據同意的結果做其他處理”);

}

/**

*處理彩禮等其他問題……

*@paramman

*/

publicvoiddoOther(Stringsays){

System.out.println(“處理其他問題”);

man.thinking(says);

woman.thinking(says);

manp.thinking(says);

womanp.thinking(says);

}

//以下四個註冊方法,可以理解為,男方和女方之間的通訊必須透過媒人

/**

*註冊男人

*@paramman

*/

publicvoidregisteMan(Manman){

this.man=man;

}

/**

*註冊女人

*@paramwoman

*/

publicvoidregisteWoman(Womanwoman){

this.woman=woman;

}

/**

*註冊男方家長

*@parammanp

*/

publicvoidregisteManParent(ManParentmanp){

this.manp=manp;

}

/**

*註冊女方家長

*@paramwomanp

*/

publicvoidregisterWomanParent(WomanParentwomanp){

this.womanp=womanp;

}

}

packagemeditator;

/**

*《p》Title:測試類——可以執行該類《/p》

*《p》Description:《/p》

*《p》Copyright:Copyright(c)2004《/p》

*@version1.0

*/

publicclassMatchmakerDemo{

publicMatchmakerDemo(){

}

publicstaticvoidmain(String[]args){

MatchmakerDemomatchmakerDemo1=newMatchmakerDemo();

Matchmakermat=newMatchmaker();//媒人出現

Manman=newMan(mat);//男人,以媒人為建立構造引數

Womanwoman=newWoman(mat);

ManParentmanp=newManParent(mat);

WomanParentwomanp=newWomanParent(mat);

////////////////

System.out.println(“///////////////////////////////////////////////////”);

man.tryst(“我想和你約會,可以嗎?”);

////////////////

System.out.println(“///////////////////////////////////////////////////”);

woman.tryst(“想和你約會”);

}

}

推薦小說