实现代理的一个小例子

本文通过示例介绍数据库连接池相关实现。先创建接口Cons.java,再实现类ConsImpl.java,接着生成代理ConsProxy.java以屏蔽close()方法,最后给出测试代码ProxyTest.java,展示了代理前后调用close()方法的不同结果。

我讲的这个例子对实现数据库连接池很有帮助!

首先生成一个接口Cons.java

package proxytest;

public interface Cons
{
 void close();
 void open();
}

下面是实现Cons的类ConsImpl.java:

package proxytest;

public class ConsImpl implements Cons
{
     public void close()
    {
         System.out.println("调用ConsImpl实现的close方法!");
     }
 
     public void open()
    {
        System.out.println("调用ConsImpl实现的open方法!");
    }

}

我们现在要屏蔽掉close()方法!就要生成一个代理ConsProxy.java:

package proxytest;

import java.lang.reflect.*;

public class ConsProxy implements InvocationHandler
{
 public ConsProxy(Cons _cons)
 {
  this.cons = _cons;
 }
 
 public Cons getCons()   //生成代理对象!
 {
  Cons cons1 = (Cons)Proxy.newProxyInstance(
       cons.getClass().getClassLoader(),
       cons.getClass().getInterfaces(),this);
  return cons1;
 }
 
 public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
 {
  Object obj = null;
  //判断是否调用了close的方法,如果调用close方法就调用你想调用的别的方法!
  if(CLOSE_METHOD_NAME.equals(m.getName()))
   close();
  else
   obj = m.invoke(cons, args);
  return obj;
 }
 
 public void close()
 {
  System.out.println("调用代理中的close方法!");
 }
 

 private Cons cons = null;
 private final static String CLOSE_METHOD_NAME = "close";
}

生成代理之后我们就可以来测试了,测试代码ProxyTest.java

package proxytest;

public class ProxyTest
{
 
 public static void main(String args[])
 {
  Cons cons = new ConsImpl();
  
  ConsProxy proxy = new ConsProxy(cons); 
  
  Cons cons1 = proxy.getCons();  //获取经过代理的对象
  
  cons.close();    //这是没有经过代理的Cons对象!
  
  cons1.close();   //这是经过代理的对象
 }

}

 

执行结果:

调用ConsImpl实现的close方法!
调用代理中的close方法!

就这么简单,希望对大家有帮助!

MATLAB代码实现一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值