定义
中介者模式是一种行为设计模式,能让你见扫对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介着对象进行合作。
类图
代码
public class MediatorPattern {
public static void main(String[] args) {
//定义中介者
MarriageAgency marriageAgency = new MarriageAgencyImpl();
//第一位男嘉宾
Person2 peter = new Person2("peter",18,Sex.MALE,18,marriageAgency);
//四位女嘉宾
Person2 abby = new Person2("abby",25,Sex.FEMALE,18,marriageAgency);
Person2 coco = new Person2("coco",25,Sex.FEMALE,18,marriageAgency);
Person2 susan = new Person2("susan",25,Sex.FEMALE,18,marriageAgency);
Person2 helen = new Person2("helen",18,Sex.FEMALE,18,marriageAgency);
//配对
marriageAgency.pair(peter);
}
}
//中介
interface MarriageAgency{
void register(Person2 person);
void pair(Person2 person);
}
//中介者实现类
class MarriageAgencyImpl implements MarriageAgency{
List<Person2> people = new ArrayList<>();
@Override
public void register(Person2 person) {
people.add(person);
}
@Override
public void pair(Person2 person) {
for(Person2 p: people){
System.out.println(p.name+"------");
if (p.age == person.requestAge && p.sex!=person.sex){
System.out.println(person.name+" "+p.name+ " "+"success");
}
}
}
}
// 参与者
class Person2{
String name;
int age;
Sex sex;
int requestAge;
MarriageAgency agency;
public Person2(String name, int age, Sex sex, int requestAge, MarriageAgency agency) {
this.name = name;
this.age = age;
this.sex = sex;
this.requestAge = requestAge;
this.agency = agency;
agency.register(this);
}
}
enum Sex{
MALE, FEMALE;
}