305中介者模式

64 阅读1分钟

定义

中介者模式是一种行为设计模式,能让你见扫对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介着对象进行合作。

类图

图片1.png

代码

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;
}