使用Java的代理机制进行日志输出
示例代码如下:
//LogProxy.java
package com.gc.action;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public class LogProxy implements InvocationHandler{
private Logger logger = Logger.getLogger(this.getClass().getName());
private Object delegate;
//绑定代理对象
public Object bind(Object delegate){
this.delegate = delegate;
return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
delegate.getClass().getInterfaces(),this);
}
//针对接口编程
public Object invoke(Object proxy,Method method,Object[] args) throws Throwable {
Object result = null;
try{
//在方法调用前后进行日志输出
logger.log(Level.INFO,args[0]+" 开始审核数据...");
result = method.invoke(delegate, args);
logger.log(Level.INFO,args[0]+" 审核数据结束...");
}catch(Exception e){
logger.log(Level.INFO,e.toString());
}
return result;
}
}
//TimeBookInterface.java
package com.gc.impl;
//针对接口编程
public interface TimeBookInterface {
public void doAuditing(String name);
}
//TimeBook.java
package com.gc.action;
import com.gc.impl.TimeBookInterface;
public class TimeBook implements TimeBookInterface {
//审核数据的相关程序
public void doAuditing(String name){
System.out.println("审核程序");
}
}
//TestHelloWorld.java
package com.gc.test;
import com.gc.action.LogProxy;
import com.gc.action.TimeBook;
import com.gc.impl.TimeBookInterface;
public class TestHelloWorld {
public static void main(String[] args){
//实现了对日志类的重用
LogProxy logProxy = new LogProxy();
TimeBookInterface timeBookProxy = (TimeBookInterface
相关文档:
/**
* 创建一个新的文件
* @param relativePath 相对路径
* @param fileName 文件名
* @return
* @throws IOException
*/
public File cre ......
为什么会有Java,为什么会有.NET
有人说,Java是为了跨Windows和UNIX而产生的。是这样吗?
Sun有自己的操作系统solaris,并且打的是高端市场,而Java发展早期阶段,Windows还主
要定位在中小型企业,并没有打算与Sun一争高端客户。
而且Sun的用户大部分都是大型企业级,而Windows定位在家庭消费用户, ......
我的java学习了一年有余,起初是胡乱学,后来觉得java非常有意思,并且想在这方面深入学习,现在才是Java学习真正的开始。我正在阅读corejava和编程思想,学完这三本后想搞j2ee的开发。本人对数据库也感兴趣,现在热衷于SQL,但是我相信自己最终会瞄准ORECAL(很大程度出于好奇心),其实现在觉得Java DB ......
1.引言
Java I/O系统是建立在数据流概念之上的,而在UNIX/Linux中有一个类似的概念,就是管道,它具有将一个程序的输出当作另一个程序的输入的能力。在Java中,可以使用管道流进行线程之间的通信,输入流和输出流必须相连接,这样的通信有别于一般的Shared Data通信,其不需要一个共享的数据空间。
2.相关类及其关系
1) ......
把树形的结构抽象了一下。
ITree
package utility.structure.def;
/**
*
* @author odie.tang
*
* @version 1.0 10/30/09
*/
public interface ITree<E>{
E getData();
E remove();
void setData(E e);
int getDepth();
int getLevel();
ITree<E> getRoot();
......