通过面向接口编程实现日志输出
2009-11-01 11:34
501 查看
在这个示例中,具体负责审核的业务逻辑代码和日志信息分离了,并且只要实现了接口TimeBookInterface的类,都可以通过代理类TimeBookProxy实现日志信息的输出,而不用在每个类里都写输出日志的代码了,从而实现日志信息的代码重用.
示例代码如下:
//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("审核程序");
}
}
//TimeBookProxy.java
package com.gc.action;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import com.gc.impl.TimeBookInterface;
public class TimeBookProxy {
private Logger logger = Logger.getLogger(this.getClass().getName());
private TimeBookInterface timeBookInterface;
//在该类中针对前面的接口TimeBookInterface编程,而不是针对具体的类
public TimeBookProxy(TimeBookInterface timeBookInterface){
this.timeBookInterface = timeBookInterface;
}
//实际业务处理
public void doAuditing(String name){
logger.log(Level.INFO,"开始审核数据 "+name);
timeBookInterface.doAuditing(name);
logger.log(Level.INFO,"审核数据结束 "+name);
}
}
//TestHelloWorld.java
package com.gc.test;
import com.gc.action.TimeBook;
import com.gc.action.TimeBookProxy;
public class TestHelloWorld {
public static void main(String[] args){
TimeBookProxy timeBookProxy = new TimeBookProxy(new TimeBook());
timeBookProxy.doAuditing("张三");
}
}
运行结果:
[INFO ] 2009-11-01 11:42:37 com.gc.action.TimeBookProxy - 开始审核数据 张三
审核程序
[INFO ] 2009-11-01 11:42:37 com.gc.action.TimeBookProxy - 审核数据结束 张三
示例代码如下:
//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("审核程序");
}
}
//TimeBookProxy.java
package com.gc.action;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import com.gc.impl.TimeBookInterface;
public class TimeBookProxy {
private Logger logger = Logger.getLogger(this.getClass().getName());
private TimeBookInterface timeBookInterface;
//在该类中针对前面的接口TimeBookInterface编程,而不是针对具体的类
public TimeBookProxy(TimeBookInterface timeBookInterface){
this.timeBookInterface = timeBookInterface;
}
//实际业务处理
public void doAuditing(String name){
logger.log(Level.INFO,"开始审核数据 "+name);
timeBookInterface.doAuditing(name);
logger.log(Level.INFO,"审核数据结束 "+name);
}
}
//TestHelloWorld.java
package com.gc.test;
import com.gc.action.TimeBook;
import com.gc.action.TimeBookProxy;
public class TestHelloWorld {
public static void main(String[] args){
TimeBookProxy timeBookProxy = new TimeBookProxy(new TimeBook());
timeBookProxy.doAuditing("张三");
}
}
运行结果:
[INFO ] 2009-11-01 11:42:37 com.gc.action.TimeBookProxy - 开始审核数据 张三
审核程序
[INFO ] 2009-11-01 11:42:37 com.gc.action.TimeBookProxy - 审核数据结束 张三
相关文章推荐
- CentOS 6.9下iptables通过raw表实现日志输出和调试
- web项目Log4j日志输出路径配置问题 问题描述:一个web项目想在一个tomcat下运行多个实例(通过修改war包名称的实现),然后每个实例都将日志输出到tomcat的logs目录下实例名命名的文
- Andriod学习笔记5:通过NDK在C++中实现日志输出
- Ubuntu 16.09下iptables通过raw表实现日志输出和调试
- Smobiler中通过Scrollable和AutoHeight属性来实现手机上屏幕自适应(开发日志十三)
- 不通过 main 方法实现 Hello , world 的输出
- 基于https实现webSocket通信实时在web页面输出日志(两个日志输出)
- SocketLog-微信调试、API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中
- LOG4J的配置..实现了输出到控制台、文件、回滚文件、发送日志邮件
- Python使用logging结合decorator模式实现优化日志输出的方法
- C#实现程序单例日志输出功能
- @interface 自定义annotation 通过AOP来实现人员操作日志
- Log4j2的日志配置文件,log4j2.xml文件的配置(实现控制台输出,各级别分别文件输出,自动压缩等)
- 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上
- 自定义Appender ,实现输出log4j日志到GUI
- 实现Qt日志功能并输出到文件
- [置顶] ELK日志分析系统通过shield实现权限管理
- linux 判断文件最后更新时间 实现监控日志是否有输出功能
- 通过继承泛型类实现输出学生信息
- 实现不同的日志不同的输出