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

    输出结果



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



  • 相关阅读:
    海量图片曝光百度新家“搜索框”大厦
    您玩儿转手机通讯录了吗?
    这是给开发者的弥天大谎还是至理名言?
    互联网创业,不要让经验挡住你前进的道路
    永远不要去请示是否应该整理一下你的代码
    LinkedIn开放软件平台 开发者可集成其技术
    马云建新"淘宝" 借传统媒体补课线下消费群
    乔布斯的五大魔法
    全能 Google 服务提醒软件,GoogSysTray
    Twitter用户偏好新闻 Facebook用户更喜欢科技
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4080929.html
Copyright © 2011-2022 走看看