• 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();
    	}
    
    }
    

    输出结果



    我们能够看到,假设我们须要在非常多个添加共同的函数的时候,仅仅须要在代理类中添加就可以。并且能够看出,代理类中仅仅有自己的业务逻辑,没有其它的不论什么服务,服务都定义在被代理类本身。



  • 相关阅读:
    css知识点
    javascript 中闭包
    javascript 继承方法总结
    css滚动滚轮事件
    关于闭包的总结
    xpth xslt
    好的js函数
    自动化测试实施(4)
    自动化测试实施(5)
    自动化测试实施(3)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4080929.html
Copyright © 2020-2023  润新知