zoukankan      html  css  js  c++  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();
    	}
    
    }
    

    输出结果



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



  • 相关阅读:
    Centos7安装dockercompose
    windows环境下python2和python3版本的切换
    移动硬盘无法读取分区表修复RAW格式修复
    网络与信息安全初探
    MyBatis下在插入数据时获得MySQL自增长序列的值
    CentOS7下mongodb忘记密码后重置密码
    url中有空格等特殊字符及中文字符处理
    通过linux mail实现网站存活监控告警通知
    如何通过SecureCRT转发功能实现外网访问内网服务
    java转JSON串的几种方式
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4080929.html
Copyright © 2011-2022 走看看