1 介绍
Acey:大白呀大白你说你也老大不小了,咋还是个单身dog呢。
大白:那没办法呀,毕竟人太帅,学习太好,没人要🙌。
小白:别听大白瞎说,他要是帅,早就一群MM追啦,其实,老妈看他还没有对象呀,就准备去婚介所找啦🤞。
大白:
Acey:🤙🤙🤙,腻害了。不过在这之前,我们来看看中介者模式,有助于配对成功率提高哦。
大白:这.....
中介者模式:Mediator模式是行为模式的一种。在Mediator中,类之间的交互通常被放到Mediator中,而不同对象则通过Mediator对象和其他对象交互,Mediator起着控制器的作用。
小白: 嗯嗯,🙋这个模式中的Mediator就是婚介所吧,不同的类就是不同的人。
Acey:👍对呀,当有了这个婚介所,单身dog找对象也就不用那么麻烦了,比如大白,不需要再去一个又一个的去找异性,了解他们,只需要通过婚介所,婚介所去处理,然后把合适的结果(适合对象)返回,这样对单身dog来说也是个好办法,而且也降低了不同单身dog之间的耦合度。
2 实现
首先来看看类图
- Mediator:中介者的抽象父类
- ConcreteMediator:具体的中介者(婚介所)
- Colleagur:关联者的抽象类
- ConcreteColleague:具体的关联者(单身dog)
实现
第一步:创建具体中介者
Mediator.class
public class Mediator {
private Man man;
private Woman woman;
//婚介所设置简单配对规则
public void getPair(){
if(man.getCondition().equals(woman.getCondition())){
System.out.println(man.getName()+"和"+woman.getName()+"条件符合,
适合配对");
}else{
System.out.println("二人条件不符,不予配对");
}
}
//设置两人配对信息
public void setPair(Man man , Woman woman){
this.man = man;
this.woman = woman;
}
public Man getMan() {
return man;
}
public void setMan(Man man) {
this.man = man;
}
public Woman getWoman() {
return woman;
}
public void setWoman(Woman woman) {
this.woman = woman;
}
}
第二步:创建关联者抽象类
Person.class
//抽象类,包含基本信息
public abstract class Person {
private String name;
private Integer condition;
private Mediator mediator;
public Person(Mediator mediator, String name, Integer condition) {
this.mediator = mediator;
this.name = name;
this.condition = condition;
}
//向婚介所投个人信息,具体子类实现
public abstract void toMediator();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Mediator getMediator() {
return mediator;
}
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public Integer getCondition() {
return condition;
}
public void setCondition(Integer condition) {
this.condition = condition;
}
}
第三步:创建具体的关联者
Man.class / Woman.class
public class Man extends Person{
public Man(Mediator mediator, String name, Integer condition) {
super(mediator, name, condition);
}
//向婚介所投个人信息
@Override
public void toMediator() {
this.getMediator().setMan(this);
this.getMediator().getPair();
}
}
public class Woman extends Person{
public Woman(Mediator mediator, String name, Integer condition) {
super(mediator, name, condition);
}
//向婚介所投个人信息
@Override
public void toMediator() {
this.getMediator().setWoman(this);
this.getMediator().getPair();
}
}
第四步:测试配对
MainClass.class
public class MainClass {
public static void main(String[] args) {
//创建婚介所
Mediator mediator = new Mediator();
//双方信息
Man dabai = new Man(mediator, "大白", 10000);
Woman chunhua = new Woman(mediator, "春花", 5000);
//婚介所配对
mediator.setPair(dabai, chunhua);
//配对结果
mediator.getPair();
System.out.println("---------------换个人-------------------");
Woman linxuan = new Woman(mediator, "林轩", 10000);
//婚介所配对
mediator.setPair(dabai, linxuan);
mediator.getPair();
}
}
如果有多个中介者的话,我们可以再写一个中介者抽象类,让具体中介者继承。
Acey:在使用了Mediator模式后,我们可以避免关联者类之间的过度耦合,即我们找对象的时候也要货比三家😂(不恰当),去了解每个人的信息,而有了婚介所之后,我们只需要和婚介所打交道,从一对多到一对一,这样每个关联者之间就更加独立,关联者之间的关系也更加易于理解和维护。
Last
祝单身dog们迎娶白富美,走向人生巅峰。👪
喜欢的话戳一下喜欢呗。
有什么建议的话希望大家能在下方回复😋
上一篇:《解释器模式 - 明天考试,戳不辍进来你自己看着办》
下一篇:《职责链模式 - 为什么你的学费比别人贵?》