静态代理

1、静态代理的角色解析

    抽象角色->通常使用接口或者抽象类来实现

    真是角色->被代理的角色

    代理角色->代理真实角色->代理真实角色后通常会做一些附属操作。

    客户->使用代理角色来进行一些操作

                                        AbstractSubject

                                             ↑                  ↑ 

Client ----------------------》proxy---------》RealSubject

 

比如说租房子,代码实现为:

Rent.java是抽象类的角色

public interface Rent {
    public void rent();
}

Host.java是真实角色(房东)

public class Host implements Rent{
    public void rent() {
        System.out.println("rent host");
    }
}

Proxy.java代理角色

public class Proxy implements Rent{
    private Host host;
    public Proxy() {
        
    }
    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("take client to host");
    }
    private void fare() {
        System.out.println("get money from client");
    }
}

 

Client.java 客户

public class Cilent {
    public static void main(String[] args) {
        Host host = new Host();
        Proxy proxy = new Proxy(host);
        proxy.rent();
    }
}

 

输出:

take client to host
rent host
get money from client

使用静态代理可以使真实角色处理的业务更加的精准,不用再去关注公共的东西

公共的业务由代理来完成------实现了业务的分工

公共业务发生扩展时变得更加集中和方便

 

静态代理缺点: 类多了 (多了一个代理类,导致工作量变大,开发效率降低)

动态代理完美解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值