首页 > 代码库 > java的静态代理
java的静态代理
解决问题:在多个模块要插入一段功能,比如,在不同业务处理模块中,都需要检查用户是否登录,如果不使用代理的话,每增加一个模块,就需要增加很多代码。
比如,除了判断是否登录,如果还需要增加一个记录日志的功能,那么每个模块都需要重新增加一个函数。
下面我们利用静态代理的功能来解决这个需求。
代码结构
功能函数接口
package itbuluoge.proxy; public interface ICompent { public void bussiness1(); public void bussiness2(); public void bussiness3(); }
代理类
package itbuluoge.proxy; public class ProxyCompent implements ICompent{ private ICompent ic; public ProxyCompent(ICompent ic) { this.ic=ic; } public void validateUser() { System.out.println("验证用户..."); } public void bussiness1() { // TODO Auto-generated method stub validateUser(); ic.bussiness1(); } public void bussiness2() { // TODO Auto-generated method stub validateUser(); ic.bussiness2(); } public void bussiness3() { // TODO Auto-generated method stub validateUser(); ic.bussiness3(); } }
被代理类
package itbuluoge.proxy; public class Compent implements ICompent{ public void bussiness1() { // TODO Auto-generated method stub System.out.println("业务1"); } public void bussiness2() { // TODO Auto-generated method stub System.out.println("业务2"); } public void bussiness3() { // TODO Auto-generated method stub System.out.println("业务3"); } }
测试类
package itbuluoge.proxy; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ProxyCompent myProxy=new ProxyCompent(new Compent()); myProxy.bussiness1(); myProxy.bussiness2(); myProxy.bussiness3(); } }
输出结果
我们可以看到,如果我们需要在很多个加入共同的函数的时候,只需要在代理类中增加即可。而且可以看出,代理类中只有自己的业务逻辑,没有其他的任何服务,服务都定义在被代理类本身。
java的静态代理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。