package Mediator.MyTest; // 租房者 abstract class lodger { int maxmoney; int minmoney; String name; public abstract void rented(); public abstract void statisticsHouse(); }
package Mediator.MyTest; // 房东 abstract class landlord { int money; String name; public abstract void rent(); public abstract void statisticsPerson(); }
package Mediator.MyTest; class landlordperson extends landlord{ Mediator mt; public landlordperson(String name,int money,Mediator mt) { this.mt=mt; this.name=name; this.money=money; mt.collectinLandlord(this); } @Override public void rent() { System.out.println("房东需要的出租金为"+money); } @Override public void statisticsPerson() { mt.statisticsPerson(this); } }
package Mediator.MyTest; class lodgerperson extends lodger { Mediator mt; public lodgerperson(String name, int minmoney, int maxmoney, Mediator mt) { this.mt = mt; this.name = name; this.maxmoney = maxmoney; this.minmoney = minmoney; mt.collectinLodger(this); } @Override public void rented() { System.out.println("房客需要租金为" + minmoney + "元到" + maxmoney + "左右的"); } @Override public void statisticsHouse() { mt.statisticsHouse(this); } }
中介的抽象方法
package Mediator.MyTest; abstract class Mediator { public Mediator(String name) { System.out.println("中介公司:"+name); } // 收集租房者 public abstract void collectinLodger(lodger ld); // 收集房东 public abstract void collectinLandlord(landlord ll); // 统计符合指定租房者要求的房子 public abstract void statisticsHouse(lodger ld); // 统计符合指定房东要求的房客 public abstract void statisticsPerson(landlord ll); }
package Mediator.MyTest; import java.util.ArrayList; class MediatorA extends Mediator{ ArrayList<lodger> lodgers=new ArrayList<lodger>(); ArrayList<landlord> landlords=new ArrayList<landlord>(); public MediatorA() { super("MediatorA"); } @Override public void collectinLandlord(landlord ll) { landlords.add(ll); } @Override public void collectinLodger(lodger ld) { lodgers.add(ld); } @Override public void statisticsHouse(lodger ld) { System.out.print("满足租房者"+ld.name+"要求的房子有:"); for(landlord landlord:landlords) { if(landlord.money<=ld.maxmoney&&landlord.money>=ld.minmoney) { System.out.print(landlord.name+":"+landlord.money+";"); } } } @Override public void statisticsPerson(landlord ll) { System.out.print("满足房东"+ll.name+"要求的房客有:"); for(lodger lodger:lodgers) { if(ll.money<=lodger.maxmoney&&ll.money>=lodger.minmoney) { System.out.print(ll.name+":"+ll.money+";"); } } } }
测试方法:
package Mediator.MyTest; import java.util.ArrayList; public class MediatorTest { /** * (Mediator)中介者模式的Java实现 * * 中介介绍房子给需要租房的人 房东脱中介介绍 * * @param args */ public static void main(String[] args) { MediatorA ma=new MediatorA(); landlordperson lp1=new landlordperson("房东1",200,ma); landlordperson lp2=new landlordperson("房东2",400,ma); landlordperson lp3=new landlordperson("房东3",800,ma); lodgerperson ld1=new lodgerperson("房客1",100,300,ma); lodgerperson ld2=new lodgerperson("房客2",0,100,ma); lodgerperson ld3=new lodgerperson("房客3",400,800,ma); lodgerperson ld4=new lodgerperson("房客4",600,10000,ma); ld1.statisticsHouse(); ld3.statisticsHouse(); System.out.println(); lp1.statisticsPerson(); } }