首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式学习之中介者模式

2012-10-07 
设计模式学习之中介者模式1.名词解释:中介者模式:用一个中介对象来封装一序列的对象交互。中介者使各对象不

设计模式学习之中介者模式

1.名词解释:

中介者模式:用一个中介对象来封装一序列的对象交互。中介者使各对象不需要显式地引用,从而使其耦合松散,而且可以独立第改变它们之间的交互。

?

2.代码示例:同事A、同事B通过中介者互相通信。

主控程序类,通过中介者,ColleagueA与ColleagueB进行通信package DesignPattern.MeditorPattern;public class Client {public static void main(String[] args) {ConcreateMeditor m = new ConcreateMeditor();Colleague A = new ColleagueA(m);Colleague B = new ColleagueB(m);m.SetColleagueA((ColleagueA) A);m.SetColleagueB((ColleagueB) B);((ColleagueA) A).send("B, May I love you?");((ColleagueB) B).send("A, I'm sorry, I already have a boy friend.");}}
运行结果:Colleague B get a message: B, May I love you?Colleague A get a message: A, I'm sorry, I already have a boy friend.

?

中介者抽象类:package DesignPattern.MeditorPattern;abstract class Meditor {public abstract void send(String message, Colleague colleague);}

?

具体中介者类:package DesignPattern.MeditorPattern;public class ConcreateMeditor extends Meditor{private ColleagueA colleagueA;private ColleagueB colleagueB;public void SetColleagueA(Colleague colleague) {if(colleague instanceof ColleagueA) {this.colleagueA = (ColleagueA) colleague;}}public void SetColleagueB(Colleague colleague) {if(colleague instanceof ColleagueB) {this.colleagueB = (ColleagueB) colleague;}}@Overridepublic void send(String message, Colleague colleague) {// TODO Auto-generated method stubif(colleague == colleagueA) {colleagueB.notify(message);} else {colleagueA.notify(message);}}}

?

同事抽象类:package DesignPattern.MeditorPattern;public abstract class Colleague {protected Meditor meditor;public Colleague(Meditor meditor) {this.meditor = meditor;}}

?

同事A类:package DesignPattern.MeditorPattern;public class ColleagueA extends Colleague {public ColleagueA(Meditor meditor) {super(meditor);// TODO Auto-generated constructor stub}public void send(String message) {meditor.send(message, this);}public void notify(String message) {System.out.println("Colleague A get a message: " + message);}}

?

同事B类:package DesignPattern.MeditorPattern;public class ColleagueB extends Colleague {public ColleagueB(Meditor meditor) {super(meditor);// TODO Auto-generated constructor stub}public void send(String message) {meditor.send(message, this);}public void notify(String message) {System.out.println("Colleague B get a message: " + message);}}

??

热点排行