静态代理

准备开始好好写博客了,之前一直没有注重这个,吃了不少亏;现在希望能记录下来自己所学到的知识,加深理解,也希望可以帮到其他人,让我们一起共创2020年的美好吧...

首先我们知道现在Java编程都是面向接口加实现类的方式,按照之前的写法都是new一个对象就可以开始调了,但是一些特殊的场景由于在代码编译的时候还不能确定下来由哪一个类来调用,因此需要在类动态运行时才能确定下来具体需要执行哪个类的方法,因此用到了动态代理,但是在说动态代理之前,先粗略的写下静态代理,以加深理解吧...

我的理解是,一个静态代理就是给代理对象绑定一个被代理对象的接口,然后new代理对象的时候,把被代理对象传进去,用代理对象调用方法就可以,代码如下:

import org.junit.Test;

/**
 * 接口
 */
interface human {
    public void eat();
}

/**
 * 被代理人对象
 */
class SuperMan implements human {

    public void eat() {
        System.out.println("超人也需要吃饭。。。");
    }
}

/**
 * 静态代理对象
 */
class proxyHuman implements human {
    private human h;

    public proxyHuman(human h) {
        this.h = h;
    }

    public void eat() {
        System.out.println("吃饭之前洗手");
        h.eat();
        System.out.println("吃饭之后漱口");
    }
}

/**
 * 测试静态代理对象
 */
public class ProxyTest {

    @Test
    public void test() {
        human human = new SuperMan();
        proxyHuman proxyHuman = new proxyHuman(human);
        proxyHuman.eat();
    }
}

输出结果如下:

吃饭之前洗手
超人也需要吃饭。。。
吃饭之后漱口

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值