静态代理

静态代理2种模式
1,通过继承来代理类:不够灵活,如果需要多个代理,就需要多层次的继承。
2,通过聚合来进行代理:相比继承代理提高了灵活性,多个代理时可以自由组合。

-------------------被代理的类----------------
package com.proxy.demo;
import java.util.Random;
public class Tank implements Moveable {
    public void move() {
        try {
            Thread.sleep(new Random().nextInt(1000));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("tank move");
    }
}

--------------------继承代理-------------------------
package com.proxy.demo;
/**
 * 通过继承来实现了对Tank的代理 缺乏灵活性  
 * 如果要增加多层代理,就需要对该类再次进行继承
 */
public class ProxyTankByExtends extends Tank {
    public void move() {
        Long start = System.currentTimeMillis();
        super.move();
        Long end = System.currentTimeMillis();
        System.out.println("run time : " + (end - start));
    }
}

----------------使用聚合代理-------------------------
package com.proxy.demo;
/**
 * 使用聚合进行类的代理
 * 多个代理同时进行时可以自由组合
 */
public class TankLogProxy implements Moveable {
    private Moveable m;
    public TankLogProxy(Moveable m) {
        super();
        this.m = m;
    }
    public void move() {
        System.out.println("start move");
        m.move();
        System.out.println("end move");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值