静态代理模式

静态代理模式

  1. 什么是代理?
  • 代理就是像是房产中介,婚庆公司一样。房产中介代理租房这个业务,婚庆公司代理别人结婚活动。
  1. 为什么要用代理?
  • 就像房产中介,如果你有房源你自己也可以出租房屋,在贴个小广告宣传一下,但是效率很低,不一定有人会来租你的房子,但你把房源信息交给房产中介给你集中管理,就省事了,可以更好地实现出租房屋这个需求。婚庆公司同理,交给他们,他们有资源,把婚礼办的更漂亮。

代码示例

  1. 租房接口
public interface Renting {
    public void Rent();//租房
}
  1. 租户
public class Tenant implements Renting {

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void Rent() {
        System.out.println("--"+name+"出租房");
    }
}
  1. 代理
public class RentProxy implements Renting {

    private Renting rent; //要出租房的租户

    public void setRent(Renting rent) {
        this.rent = rent;
    }

    public void Rent() {
        this.methodProxy();
        rent.Rent();
    }

    public void methodProxy(){
        System.out.println("代理出租房屋");
    }
}
  1. 测试
public class ProxyTest {
    public static void main(String[] args) {
        Tenant tenant = new Tenant();
        tenant.setName("jack");
        tenant.Rent();//租户单独出租房
        
        RentProxy rentProxy = new RentProxy();
        rentProxy.setRent(tenant);
        rentProxy.Rent();//代理给他出租房
    }
}
  1. 总结
  • 最终两个Rent()方法都能达到出租房屋的目的,但是代理可在不改动原租户代码的情况下,在Rent()前后加一些处理达到增强原租户Rent()方法。
  • 代理和租户都要实现同一个租房接口,代理需要提供一个租户注册的方法,也可以叫注入方法,可以是set注入也可以是构造方法注入。
  • 这里有个知识点:我们经常用的线程Ranable接口就是租房接口,而Thread就是代理商,而我们需要实现Ranable接口重写run()方法,我们是租户。我们在使用线程时是:
new Thread( ()-> {  System.out.println("线程一"); }).start;

查询Thread源码发现:

public
class Thread implements Runnable {
...
}

没错就是静态代理模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值