模式源于生活:代理模式---中介租房

来源:互联网 发布:开票软件怎么重装 编辑:程序博客网 时间:2024/05/17 08:31

代理模式产生的原因:一、客户无法直接获得对象的引用来调用它的方法。二、代理需要对被代理的对象进行预处理或后处理。

以我找工作时租房未背景来阐述下中介中用到的代理模式:

对于租客我来说,我曾经跑到小区里转转,希望能看到贴着租房信息的小广告以便直接联系到房主,这样的话就可以省去中介的费用了。可是,转了几个小区了,发现现在的房东已经不流行在墙上贴小广告了,他们更愿意把房源信息放在中介那里,这样对于他们省时省力。

最后,我也只能通过中介来找到了我理想的房子,并付了半个月房租的中介费,心疼不已!

在我租房的过程中,我因为无法直接获得房主的信息而不得不通过中介来找到寻找房源。中介的作用是代理房东出租他们的房子。下面我们建立四个类来描述几者之间的关系:

1.Lender接口:它有一个出租的方法,房东和中介都要实现它。

public interface Lender
{
    public void lend();
}

2.Agency类:中介,中介持有多名房东的信息。并且提够一个search方法供租房者寻找他们的房源,通过search方法能找到房源对应的房东。

public class Agency implements Lender
{
    private List<Landlord> landlord_list = new ArrayList<Landlord>();
    private Landlord landlord;
    @Override
    public void lend()
    {
        if(landlord == null)
            System.out.println("没有你要找的房源");
        else
        {
            landlord.lend();
            System.out.println("出租成功!");
        }
    }
    public void find(float price, float area, boolean nice)
    {
        for(Landlord landlord : landlord_list)
        {
            if(landlord.getHouse_info().getPrice() == price)
            {
                if(landlord.getHouse_info().getArea() == area)
                {
                    if(landlord.getHouse_info().getNice() == nice)
                    {
                        this.landlord = landlord;
                        break;
                    }
                }
            }
        }
    }
    public List<Landlord> getLandlord_list()
    {
        return landlord_list;
    }
    public void setLandlord_list(List<Landlord> landlord_list)
    {
        this.landlord_list = landlord_list;
    }

}

3.Landlord:房东信息,房东提供自己的房源信息和自己的姓名

private HouseInfo house_info;
    private String name;
    public HouseInfo getHouse_info()
    {
        return house_info;
    }
    public void setHouse_info(HouseInfo house_info)
    {
        this.house_info = house_info;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public void lend()
    {
        System.out.println(name+"的房子正在出租!");
    }

4.HouseInfo:房源信息。房源信息包括价格、面积、是否精装修。

public class HouseInfo
{
    float price;
    float area;
    boolean nice;
    public float getPrice()
    {
        return price;
    }
    public void setPrice(float price)
    {
        this.price = price;
    }
    public float getArea()
    {
        return area;
    }
    public void setArea(float area)
    {
        this.area = area;
    }
    public boolean getNice()
    {
        return nice;
    }
    public void setNice(boolean nice)
    {
        this.nice = nice;
    }
}

客户端代码如下:

public class Client
{
    public static void main(String[] args)
    {
        //房源信息1
        HouseInfo info1 = new HouseInfo();
        info1.setPrice(2200);
        info1.setArea(55);
        info1.setNice(false);
        Landlord chuhao = new Landlord();
        chuhao.setHouse_info(info1);
        chuhao.setName("储昊");
        //房源信息2
        HouseInfo info2 = new HouseInfo();
        info2.setPrice(2300);
        info2.setArea(50);
        info2.setNice(true);
        Landlord liuyang = new Landlord();
        liuyang.setHouse_info(info2);
        liuyang.setName("刘洋");
        //中介
        Agency agengcy = new Agency();
        agengcy.getLandlord_list().add(liuyang);
        agengcy.getLandlord_list().add(chuhao);
        //向中介提供我要找的房源信息
        agengcy.find(2200, 55, true);
        agengcy.lend();
    }
}

1 0