中介者模式
设计原则:遵循迪米特,破坏单一职责
常用场景:一个系列的对象交互关系十分复杂
使用概率:10%
复杂度:中
变化点:对象之间的交互
选择关键点:复杂的交互关系是否有共性可被中介者承担
逆鳞:中介者无法工作
主要思想:
租房子找中介,这样就和房东没什么直接关系了,我有事也不用麻烦房东,房东有事也不找我
即两个对象需要有关系,但是类中不定义和依赖,而是把这种关系找一个中介类去维护
比如我是 租房的类 我要找房东吧 那我就需要定义房东类对象 就形成依赖了
同样房东类一样
但是现在我和房东都找中介,那么租房者类和房东类 只需要持有中介类对象就可以了,并且有什么关于房子的事,因为中介类中持有房东和租房者对象那么都可以在中介类中完成了
public class Landlord {
private Mediator mediator;
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public void rentOut() {
System.out.println("出租房子");
}
}
public class Renting {
private Mediator mediator;
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public void RentIn() {
System.out.println("租房子");
}
}
//这里只写了中介租出了房子,两方和中介的交互没做但是也持有中介的对象,可进行想要的交互
public class Mediator {
private Landlord landlord;
private Renting renting;
public void setLandlord(Landlord landlord) {
this.landlord = landlord;
}
public void setRenting(Renting renting) {
this.renting = renting;
}
public void RentHouse() {
landlord.rentOut();
renting.RentIn();
}
}