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

    输出结果



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



  • 相关阅读:
    2019年11月4日随堂测试 最多输入字母统计
    写增删改查中间遇到的问题
    2019年12月9日下午自习成果
    2019年12月16日 分级考试
    2019年11月18日 JAVA期中考试 增删改查
    sql语言积累
    【转载】Java项目中常用的异常处理情况总结
    泛型
    C#数字格式化输出
    委托,Lambda的几种用法
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4080929.html
Copyright © 2011-2022 走看看