在之前,我们讲述了代理模式,今天我们将讲解一下中介者模式。
依旧是一个提醒:
依赖倒转原则
中介者模式其实和代理模式很像,都是通过一个额外的类进行调用。
中介者模式其实和字面的意思听起来很是相似,例如你买房子找中介,你和卖房子的人之间的交互都是通过中介来实现的,中介者模式也是这样。即当一个非中介者想要和另一个进行交互的时候,它需要通过调用中介者进行。
所以在类里面,两个非中介者需要知道中介者这个类,中介者需要知道非中介者者两个类。
链家中介者抽象类:
interface Mediator{
setPerson1(Person person);//设置买方
setPerson2(Person person);//设置卖方
send(String message,Colleague coll);//将一方信息送给另外一方
}
链家中介者实现类:
class ConcreteMediator implements Mediator{
Person person1 = null;
Person person2 = null;
setPerson1(Person person){
person1 = person;
};
setPerson2(Person person){
person2 = person;
};
send(String message,Person p){//将一方信息送给另外一方
if(p== person1 ){
person2.getMessage(message);
}else{
person1.getMessage(message);
}
}
}
买卖双方抽象类:
interface Person{
setMediator(Mediator mediator);//设置中介
send(String message);//发送信息
getMessage(String message);//接收信息
}
买卖双方实现类:
class Person1 implements Person{
Mediator mediator = null;
setMediator(Mediator mediator){
this.mediator = mediator
}
send(String message){
mediator.send(message,this);
}
getMessage(String message){
//处理
}
}
class Person2 implements Person{
Mediator mediator = null;
setMediator(Mediator mediator){
this.mediator = mediator
}
send(String message){
mediator.send(message,this);
}
getMessage(String message){
//处理
}
}
使用者:
Mediator mediator = new ConcreteMediator ();
Person person1 = new Person1();
Person person2 = new Person2();
//让中介者认识双方
//让双方认识中介者
mediator.setPerson1(person1 );
mediator.setPerson2(person2 );
person1.setMediator(mediator );
person2.setMediator(mediator );
//双方通过中介者进行交流
person1.send("我要买你的房子");
person2.send("好的,谈价钱");
以上就是中介者模式了,看来很复杂,但是其实不复杂,可以根据实际来看:
**1.既然是通过中介者买卖房子,所以中介应该认识买卖双方,买卖双方应该认识中介者,所以中介者类中有setPerson1与setPerson2的方法来认识买卖双方,而买卖双方则有setMediator方法来认识中介者。
2.现在大家都认识了,其中买方想和卖方交流,他应该通过中介者来进行话语传递,因此在person1中的send方法里面调用的是mediator中send方法,而在mediator中的send方法则是根据不同的传入,调用另外一个接收信息的方法。(因为中介者这里就是一个传声筒)
3.买卖双方都应该有一个处理信息的方法**
怎么样和现实其实是一样的吧!