静态代理
1.静态代理的角色分析:
代理代理,根据词意就可以知道是让别人来替你做事情,其中必然牵扯到权利的赋予,下面先来介绍一下其中的几个角色
抽象角色---一般使用接口或者抽象类来实现
真实角色---被代理的角色(就是你本人)
代理角色---代理真实角色---代理真实角色后一般会做一些附属的操作(替你做事情的人)
客户---使用代理角色来进行一些操作(就是具体的实现了)
还是不清楚,下面的demo来慢慢感觉代理,代码实现租房子,,,中介,房主,租房子的人
2.代码实现
- Rent.java--抽象角色
public interface Rent { public void rent(); }
- Host.java真实角色
public class Host implements Rent{ public void rent(){ System.out.println("房屋出租................"); } }
- Proxy.java代理角色
public class Proxy implements Rent{ //把业务交给代理来完成,代理需要依赖于真实角色 private Host host; public Proxy(Host host) { this.host = host; } public void setHost(Host host) { this.host = host; } //租房 public void rent(){ seeHouse(); host.rent(); fare(); } //看房 private void seeHouse(){ System.out.println("带房客看房.............."); } //收中介费 private void fare(){ System.out.println("收取中介费.............."); } }
- Client.java客户角色
public class Client { public static void main(String[] args) { Host host=new Host(); Proxy proxy=new Proxy(host); proxy.rent(); } }
简单的用图来描述一下
、
3.使用静态代理
处好
- 使得真实角色处理的业务更加的纯粹,不再去关注一些公共的事情
- 公共的业务由代理来完成----实现业务的分工
- 公共业务发生扩展时变得更加集中和方便
缺点
- 类多了---多了代理类