代理模式
代理模式,为其他对象提供一个可以访问这个对象的接口。
在生活中,房地产中介就是一个典型的代理模式实例,房子是房东的私有财产,但是在房主做出交由中介出租的决定的时候,会与中介签订合同,那么租户就可以通过中介的代理签订一份合同,从而没有与房东进行交流,或者更有甚者,房东从来没有出现,如链家现在的自如(遍地的门店),房东将房子租给了中介,中介再将房子租给租客。
下面我们就以这个做一个例子:
新建中介和房东的抽象接口
public interface RentHouse {
void rent() ;
}
实现中介和房东类
public class Landlord implements RentHouse{
private Tenant tenant;
public Landlord(Tenant tenant) {
this.tenant = tenant;
}
@Override
public void rent() {
System.out.println("房子租给"+tenant.getName());
}
}
public class IntermediayAgent implements RentHouse{
private Landlord landlord;
public IntermediayAgent(Tenant tenant) {
landlord = new Landlord(tenant);
}
@Override
public void rent() {
landlord.rent();
}
}
租客类
public class Tenant {
private String name;
public Tenant(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
使用类
Tenant tenant = new Tenant("小明");
IntermediayAgent agent = new IntermediayAgent(tenant);
agent.rent();
}
输出结果
房子租给小明
小明是通过中介来租到的房子。中介作为房东的代表,与小明签订租房合同,从而将房子租给了小明。
还有在平常电视中经常有,律师说“我作为XXX先生的全权代表处理这件事,我当事人不方便出面,所以你们有任何事情都可以找我。”