分享
 
 
 

设计模式通俗演义(一)----中介者模式

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

中介者模式是设计模式中一个比较常用的模式,他的原理比较简单,其实就是,把各个组件(对象)之间的复杂交互通讯通过其中的一个”中介者”来处理.

中介者(midiator)模式通过提供一种松耦合的方式,解决对个对象之间复杂的交换问题..在这种模式中,只有一个类彻底清楚其他类的方法,当类发生变化时,他们会通知中介者,在由中介者将改变通知其他相关的类(对象/组件).

//拿一个男人和女人通过媒人约会的例子来实现这种设计模式...:)哈哈.这就是“通俗模式“

1.明确,男人和女人如果约会,假设男方提出约会(女方提出过程类似).如果没有媒人,该过程如下:

a)男方如果想和女方约会,男方

b)首先请示自己的父母(^_^,假设是封建家庭哦...),

c)然后通知女方

d)女方需要请示女方父母.是否同意约会.

弊端:需要男方交换的对象太多,且关系复杂,当随着男女之间的交往的复杂,会涉及到更多复杂的交换,双方父母的交换也很更复杂,使得四个对象(男,女,男方家长,女方家长)关系复杂.难以控制.

模式改进:采取媒人做“中介者“-模式,将变得简单:,其中无论那一个人有什么要求,请求,只需要告诉“媒人“,至于该请求需要告诉谁,和谁交换,只有媒人知道,

//模拟代码类如下:&&&&&&:))

package meditator;

/**

* <p>Title: 男人类</p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: 乐开工作室</p>

* @author 陈少坤

* @version 1.0

*/

public class Man {

private Matchmaker mat; // 媒人

public Man(Matchmaker mat) {

this.mat=mat;

mat.registeMan(this);//把自己在媒人那里注册(声明)

}

public static void main(String[] args) {

}

/**

*考虑是否同意

* @return

*/

public boolean thinking(String says) {

System.out.println("男人考虑:我该不该同意呢???");

if (says.length() > 5){

System.out.println("我同意了");

return true;

}

else{

System.out.println("我不同意.");

return false;

}

}

/**

* 提出约会

* 男人提出约会,只需要告诉媒人,由媒人负责跟其他人交互.

* @param says

*/

public void tryst(String says){

System.out.println("男人提出约会请求,说:"+says);

mat.doManTryst(says);

}

}

package meditator;

/**

* <p>Title: 男方家长类</p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: 乐开工作室</p>

* @author 陈少坤

* @version 1.0

*/

public class ManParent {

private Matchmaker mat; //媒人类

public ManParent(Matchmaker mat) {

this.mat = mat;

mat.registeManParent(this); //把自己在媒人那里注册(声明)

}

public static void main(String[] args) {

//ManParent manParent1 = new ManParent();

}

/**

*考虑是否同意

* @return

*/

public boolean thinking(String says) {

System.out.println("男方父母考虑:我们做父母的该不该同意呢???");

if (says.length() > 5){

System.out.println("我们做父母的同意了");

return true;

}

else{

System.out.println("我们做父母的不同意.");

return false;

}

}

}

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

package meditator;

/**

* <p>Title:女人类 </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: 乐开工作室</p>

* @author 陈少坤

* @version 1.0

*/

public class Woman {

private Matchmaker mat; // 媒人

public Woman(Matchmaker mat) {

this.mat=mat;

mat.registeWoman(this); //把自己在媒人那里注册(声明)

}

public static void main(String[] args) {

}

/**

*考虑是否同意

* @return

*/

public boolean thinking(String says) {

System.out.println("女人考虑:我该不该同意呢???");

if (says.length() > 5){

System.out.println("我同意了");

return true;

}

else{

System.out.println("我不同意.");

return false;

}

}

/**

* 提出约会

* 女人提出约会,只需要告诉媒人,由媒人负责跟其他人交互.

* @param says

*/

public void tryst(String says){

System.out.println("女人提出约会请求,说:"+says);

mat.doWomanTryst(says);

}

}

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

package meditator;

/**

* <p>Title: 女方家长类</p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: 乐开工作室</p>

* @author 陈少坤

* @version 1.0

*/

public class WomanParent {

private Matchmaker mat; //媒人类

public WomanParent(Matchmaker mat) {

this.mat=mat;

mat.registerWomanParent(this); //把自己在媒人那里注册(声明)

}

public static void main(String[] args) {

//WomanParent womanParent1 = new WomanParent();

}

/**

*考虑是否同意

* @return

*/

public boolean thinking(String says) {

System.out.println("女方父母考虑:我们做父母的该不该同意呢???");

if (says.length() > 5){

System.out.println("我们做父母的同意了");

return true;

}

else{

System.out.println("我们做父母的不同意.");

return false;

}

}

}

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

package meditator;

/**

* <p>Title:媒人类-----中介者 </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: 乐开工作室</p>

* @author 陈少坤

* @version 1.0

*/

public class Matchmaker {

private Man man; //男人

private Woman woman; //女人

private ManParent manp; //男方父母

private WomanParent womanp; //女方父母

Matchmaker() {

}

public static void main(String[] args) {

Matchmaker matchmaker1 = new Matchmaker();

}

/**

* 媒人处理男人提出的约会,

* 男人提出约会,则只需要把该问题告诉媒人,

* 由媒人负责去跟其女方,女方父母,男方家长交互

* @param says

*/

public void doManTryst(String says) {

System.out.println("媒人开始处理约会问题开始");

woman.thinking(says);

manp.thinking(says);

womanp.thinking(says);

System.out.println("媒人处理约会问题结束,根据同意的结果做其他处理");

}

/**

* 媒人处理女人提出的约会,

* 由媒人负责去跟男方,女方父母,男方家长交互

* @param says

*/

public void doWomanTryst(String says) {

System.out.println("媒人开始处理约会问题开始");

man.thinking(says);

manp.thinking(says);

womanp.thinking(says);

System.out.println("媒人处理约会问题结束,根据同意的结果做其他处理");

}

/**

* 处理彩礼等其他问题.....

* @param man

*/

public void doOther(String says) {

System.out.println("处理其他问题");

man.thinking(says);

woman.thinking(says);

manp.thinking(says);

womanp.thinking(says);

}

//以下四个注册方法,可以理解为,男方和女方之间的通讯必须通过媒人

/**

* 注册男人

* @param man

*/

public void registeMan(Man man){

this.man=man;

}

/**

* 注册女人

* @param woman

*/

public void registeWoman(Woman woman){

this.woman=woman;

}

/**

* 注册男方家长

* @param manp

*/

public void registeManParent(ManParent manp) {

this.manp = manp;

}

/**

*注册女方家长

* @param womanp

*/

public void registerWomanParent(WomanParent womanp){

this.womanp = womanp;

}

}

package meditator;

/**

* <p>Title: 测试类---可以运行该类</p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: 乐开工作室</p>

* @author 陈少坤

* @version 1.0

*/

public class MatchmakerDemo {

public MatchmakerDemo() {

}

public static void main(String[] args) {

MatchmakerDemo matchmakerDemo1 = new MatchmakerDemo();

Matchmaker mat = new Matchmaker(); //媒人出现

Man man = new Man(mat);//男人,以媒人为建立构造参数

Woman woman=new Woman(mat);

ManParent manp=new ManParent(mat);

WomanParent womanp=new WomanParent(mat);

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

System.out.println("///////////////////////////////////////////////////");;

man.tryst("我想和你约会,可以吗?");

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

System.out.println("///////////////////////////////////////////////////");;

woman.tryst("想和你约会");

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有