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