Java高级技术(动态代理)

一,代理

Java高级技术(动态代理)_第1张图片

二,案例

放到代码中演示:

首先,创建一个明星接口,这个接口有一个skill方法,说明只要是明星就必须有点技能。

public interface Star {
    void skill();
}


然后,创建坤坤对象,实现明星接口

public class GeGe implements Star {
    private String name;

    public GeGe() {
    }

    public GeGe(String name) {
        this.name = name;
    }

    @Override
    public void skill() {
        System.out.println(name+"在唱歌");
        System.out.println(name+"在跳舞");
        System.out.println(name+"在说唱");
    }


接下来,创建经纪人类,来帮助坤坤完成接单和变演完给粉丝送篮球

代理类也有一个保存用户的方法,但是这个方法属于代理类,这个方法不会真的保存用户,而是起到一个过渡作用,其内部有一个真实对象,进行用户保存。

public class StarProxy implements Star {
    private Star star;

    public StarProxy(Star star) {
        this.star = star;
    }

    @Override
    public void skill() {
        System.out.println("接受预约");
        star.skill();
        System.out.println("表演完给粉丝送篮球");
    }
}


最后,结婚当天

public class Marry {
    public static void main(String[] args) {
        GeGe gege = new GeGe("坤坤");

        StarProxy starProxy = new StarProxy(gege);
        starProxy.skill();
    }
}


运行结果:

Java高级技术(动态代理)_第2张图片

 图解:

Java高级技术(动态代理)_第3张图片

你可能感兴趣的:(java高级技术,开发语言,java)