首先是一个租房子的接口!
package com.fan.demo01;
/**
* およそ神
* 租房子接口
*/
public interface Rent {
void rent();
}
然后是房东来实现这个接口
package com.fan.demo01;
/**
* およそ神
* 房东房屋出租
*/
public class Host implements Rent{
public void rent() {
System.out.println("房东出租房子!");
}
}
接下来是中介来帮忙出租,当然中介也有他自己的利益!
package com.fan.demo01;
/**
* およそ神
* 代理帮忙出租
*/
public class Proxy implements Rent{
private Host host;
public Proxy(Host host) {
this.host = host;
}
public Proxy() {
}
public void rent() {
host.rent();
seeHouse();
hetong();
fare();
}
public void seeHouse() {
System.out.println("中介带你看房子!");
}
public void hetong() {
System.out.println("签租赁合同!");
}
public void fare() {
System.out.println("收中介费!");
}
}
最后是测试类:
package com.fan.demo01;
/**
* およそ神
*/
public class Test {
public static void main(String[] args) {
Host host = new Host();
Proxy proxy = new Proxy(host);
proxy.rent();
}
}
代理模式的好处:·可以使真实角色的操作更加纯粹!不用去关注一些公共的业务·公共也就就交给代理角色!实现了业务的分工!·公共业务发生扩展的时候,方便集中管理!
代理模式的缺点:·一个真实角色就会产生一个代理角色;代码量会翻倍-开发效率会变低