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

    输出结果



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



  • 相关阅读:
    C++头文件编译问题
    Windows下Critical Section、Event、Mutex、Semaphores区别
    MFC OnCtlColor函数用来改变控件颜色
    Ctreectrl +CImageList应用
    20091113 08:37 实现文件读写操作的几种方法
    在网上看到这篇文章还不错,OnDrawItem与DrawItem讨论
    Mysql全文搜索match…against的用法
    Django and fulltext search
    Feed DB 搜博客 一个博客搜索引擎
    通过扩展Django数据库API支持全文搜索
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4080929.html
Copyright © 2011-2022 走看看