代理模式
角色分析:
抽象角色:一般使用接口或者抽象类去解决
真是角色:被代理的角色
代理角色:代理真实角色,我们一般会用属性去操作
客户:访问代理对象的人
接口
package com.yms.proxy;
/**
- @Author 杨明书
- @PackageName: com.yms.proxy
- @ClassName: Rent
- @Description:
- @Date: 2021/12/30 9:57
- 出租房子的接口,这是房东和中介都需要的
/
public interface Rent {
/*- 共同需要的接口,出租的接口
*/
void rentHouse();
}
- 共同需要的接口,出租的接口
房东
package com.yms.proxy;
/**
-
@Author 杨明书
-
@PackageName: com.yms.proxy
-
@ClassName: Host
-
@Description:
-
@Date: 2021/12/30 10:00
*房东-要出租房子
*/
public class Host implements Rent{@Override
public void rentHouse() {
System.out.println("房东要出租房子");
}
}
中介,也称为代理
package com.yms.proxy;
/**
-
@Author 杨明书
-
@PackageName: com.yms.proxy
-
@ClassName: Proxy
-
@Description:
-
@Date: 2021/12/30 10:04
/
public class Proxy implements Rent{
/*- 拿到房源
*/
private Host host;
public Proxy(){
}
/**
- 帮助房东出租房子
- @param host
*/
public Proxy(Host host) {
this.host = host;
}
@Override
public void rentHouse() {
host.rentHouse();
//看房子
seeHouse();
//收中介费
Fare();
//签合同
HeTong();
}/**
- //看房,中介能做房东不能做的事情,如果你要看很多房子,那房东肯定没有时间陪你一套套的看
- //这个时候中介就很有用了,你慢慢看,反正他是专门负责带你看房源的
*/
public void seeHouse(){
System.out.println("中介带你看房子,不合适就换,直到你满意为止");
}
/**
- 中介还有一个功能 ,就是收中介费用
/
public void Fare(){
System.out.println("你满意后,需要给中介缴纳一定的中介费用");
}
/* - 中介还有一个功能 ,就是收中介费用
*/
public void HeTong(){
System.out.println("决定入住后,和中介签订合同");
}
- 拿到房源
}
我-客户,需要租房子
package com.yms.proxy;
/**
-
@Author 杨明书
-
@PackageName: com.yms.proxy
-
@ClassName: Client
-
@Description:
-
@Date: 2021/12/30 10:01
-
我-需要租房子,我只需要调用和房东沟通就行了
-
问题:现在找不到房东,房子在中介手里,中介手里有大量的房源
-
我如果需要租房子就必须找中介,中介就成了一个代理
*/
public class Client {
public static void main(String[] args) {
//房东
Host host = new Host();
//现在租房子不找房东了,找中介,代理
Proxy proxy = new Proxy(host);
proxy.rentHouse();}
}