引言
代理模式:是将业务的逻辑按角色进行分开,使代码更加解耦合,代理模式是AOP面向切面编程的核心。静态代理是其实现的方式之一,但静态代理在一定成都上会影响开发效率,动态代理则不具有这种问题。
Java实现动态代理中,我注意到Proxy.newProxyInstance()方法的第二个参数是传入一个接口类数组,而不是单个接口类,网上大多数介绍的是通过向上转型,实现单个接口的功能调用,于是我开始思考如何仅通过一个代理对象同时实现代理多个接口的功能调用。以下将从零开始介绍Java实现动态代理的代码,若只看实现多个接口的调用,可以直接跳转到第6节。
代码准备
一个学生类,实现了两个接口,获得【能飞】和【能得分】两个技能。
class Student implements Flyable , Scoreable { private String name ; private int age; public Student(String name , int age){ this.name = name ; this.age = age ; } @Override public void fly(){ System.out.println("我名叫" + this.name + ",今年" + this.age + "岁,我竟然能飞"); } @Override public void score(int score) { System.out.println("我名叫" + this.name + ",今年" + t