模式源于生活:代理模式---中介租房
来源:互联网 发布:开票软件怎么重装 编辑:程序博客网 时间: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();
}
}
- 模式源于生活:代理模式---中介租房
- 设计模式源于生活
- 外观、中介者、代理模式
- 外观,代理与中介者模式
- 代理、中介者 VS. 外观模式
- OC-中介找房-代理设计模式
- OC-中介找房-代理设计模式
- 中介者模式、代理模式和外观模式的Pk
- 中介模式
- 中介模式
- 中介模式
- 中介模式
- 中介模式
- 一个租房案列透彻理解--静态代理模式
- ANDROID的 BLUETOOTH 实现机制--中介模式和代理模式
- ANDROID的 BLUETOOTH 实现机制--中介模式和代理模式 .
- 设计模式 - 代理模式、桥接模式、中介者模式、命令模式
- 【设计模式之三:模式对比】外观模式、代理模式与中介者模式的区别
- laravel的启动过程
- JDK、JRE、JVM三者间的关系
- 预付金模块存储过程
- Parcelable
- hdu 2872 Another Snake 爆搜 判断射线与线段相交
- 模式源于生活:代理模式---中介租房
- HDU 4342 - History repeat itself
- sourceinsight中使用正则表达式
- Java线程之单生产者单消费者示例(二)
- Android—TextView的XML属性和方法
- AndroidBucket Android开发常用整理
- ListView中Button的点击事件冲突
- jQuery1.72 内存泄露追踪(附解决方案)
- background