中介者维护一组用户的交互,用户通过中介者而不是直接进行交互。中介模式一般有以下作用:抽象中介:定义中介需要的执行方式。具体中介者:实现用户交互的特定逻辑。用户类:引入中介,输出需要与中介交互的内容。下面是一个婚介中心实现中介模型的例子abstractintermediary-matchmakingcenterpublicinterfaceDatingAgency{/***Joinmembers*@paramdog*/voidjoin(SingleDogdog);/***根据年龄范围选择成员*@parammin*@parammax*@return*/ListgetList(Integermin,Integermax,SingleDog.SexEnumsexEnum);}具体中介-王婆婚介所publicWangPoDatingAgency类实现DatingAgency{privateListsingleDogs=newArrayList<>();@Overridepublicvoidjoin(SingleDogdog){System.out.println("欢迎"+dog.getName()+"加入旺坡婚介所");singleDogs.add(狗);}@OverridepublicListgetList(Integermin,Integermax,SingleDog.SexEnumsexEnum){returnsingleDogs.stream().filter(dog->{if(dog.getAge()>=min&&dog.getAge()<=max&&!sexEnum.equals(dog.getSex()))返回真;返回假;}).collect(Collectors.toList());}}抽像用户-单身人士publicabstractclassSingleDog{DatingAgencyagency;私有字符串名称;私人整数年龄;私有SexEnum性别;publicenumSexEnum{MAN("男"),WOMAN("女");私人字符串性别;SexEnum(Stringsex){this.sex=sex;}}publicSingleDog(DatingAgencyagency,Stringname,Integerage,SexEnumsex){this.agency=agency;this.name=名称;这个。年龄=年龄;this.sex=性别;agency.join(这个);}/***根据年历挑选异常*@return*/publicabstractListpickByAge(Integermin,Integermax);公共抽象无效介绍();publicDatingAgencygetAgency(){返回机构;}publicvoidsetAgency(DatingAgencyagency){this.agency=agency;}publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}公开cIntegergetAge(){返回年龄;}publicvoidsetAge(Integerage){this.age=age;}publicSexEnumgetSex(){返回性别;}}特定用户-程序员用户publicclassProgrammerextendsSingleDog{publicProgrammer(DatingAgencyagency,Stringname,Integerage,SexEnumsex){super(agency,name,age,sex);}@OverridepublicListpickByAge(Integermin,Integermax){returnagency.getList(min,max,getSex());}@Overridepublicvoidintroduce(){System.out.println("读取以下代码获取我的QQ号");System.out.println("0110100101010001001000110100......");}}特定用户——有丰富交友经验的单身人士}@OverridepublicListpickByAge(Integermin,Integermax){r返回agency.getList(min,max,getSex());}@Overridepublicvoidintroduce(){System.out.println("你是我的心,你是我的肝,你是我的四分之三!");}}测试公共类MediatorTest{@Testpublicvoidtest(){DatingAgencyagency=newWangPoDatingAgency();SingleDogdog1=newProgrammer(agency,"ProgrammerA",23,SingleDog.SexEnum.MAN);SingleDogdog2=newProgrammer(agency,"ProgrammerB",29,SingleDog.SexEnum.MAN);SingleDogdog3=newProgrammer(agency,"ProgrammerC",35,SingleDog.SexEnum.WOMAN);SingleDogdog4=newExperienceSingleDog(agency,"SexEnumA",24,SingleDog.SexEnum.MAN);SingleDogdog5=newExperienceSingleDog(agency,"渣男A",31,SingleDog.SexEnum.WOMAN);ListsingleDogs=dog5.pickByAge(24,35);for(SingleDogdog:singleDogs){System.out.println("=====================");System.out.println("姓名"+dog.getName());System.out.println("年龄"+dog.getAge());狗介绍();}}}======结果======欢迎程序员A加入王婆婚介所欢迎程序员B加入王婆婚介所欢迎程序员C加入王婆婚介所欢迎无情男A加入王婆婚介所欢迎渣女A加入王婆婚介所====================姓名程序员B年龄29阅读以下代码获取我的QQ号0110100101010001001000110100......====================姓名伤心欲绝的男人A年龄24你是我的心,你是我的肝,你是我的四分之三!优点降低类的复杂度,将用户之间原来的一对多变为用户与中介之间的一对一解耦用户缺点中介会非常庞大??,难以维护