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

Mediator形式

2012-08-25 
Mediator模式用一个中介对象来封装一系列的对象交互,使各对象不需要显示地相互调用??Mediator.javapackage

Mediator模式

用一个中介对象来封装一系列的对象交互,使各对象不需要显示地相互调用

?


Mediator形式
?

Mediator.java

package com.gary.designpattern.mediator;/** * 中介者 * @author gary * */public interface Mediator {public void send(String message, Person person);}

?

MediatorImpl.java

package com.gary.designpattern.mediator;public class MediatorImpl implements Mediator {//中介者需要知道所有具体对象private PersonA personA;private PersonB personB;public void setPersonA(PersonA personA) {this.personA = personA;}public void setPersonB(PersonB personB) {this.personB = personB;}@Overridepublic void send(String message, Person person) {if(person.equals(personA)){personA.greeting(message);}else{personB.greeting(message);}}}

?

Person.java

package com.gary.designpattern.mediator;public abstract class Person {protected Mediator mediator;public Person(Mediator mediator) {this.mediator = mediator;}}

?

PersonA.java

package com.gary.designpattern.mediator;public class PersonA extends Person {public PersonA(Mediator mediator) {super(mediator);}/** * 通过中介者发送信息 * @param message */public void send(String message){mediator.send(message, this);}public void greeting(String message){System.out.println("PersonA: " + message);}}

?

PersonB.java

package com.gary.designpattern.mediator;public class PersonB extends Person {public PersonB(Mediator mediator) {super(mediator);}/** * 通过中介者发送信息 * @param message */public void send(String message){mediator.send(message, this);}public void greeting(String message){System.out.println("PersonB: " + message);}}

?

Test.java

package com.gary.designpattern.mediator;/** * 测试 * @author gary * */public class Test {public static void main(String[] args) {MediatorImpl ci = new MediatorImpl();//让具体对象认识中介者PersonA personA = new PersonA(ci);PersonB personB = new PersonB(ci);//让中介者认识具体对象ci.setPersonA(personA);ci.setPersonB(personB);//通过中介者转发personA.send("Hello B!");personB.send("Hi A!");}}

?

热点排行