易截截图软件、单文件、免安装、纯绿色、仅160KB

浅谈Java代理机制

可以说代理是java十分重要的一种机制,另一个当然是属于反射了,jdk中单独讲到了反射API(java.lang.reflect),可能有人认为反射对资源消耗比较厉害,确实也是,反射肯定是要消耗资源的,但也不是什么都要用到反射,所以最佳试验应该是在资源消耗程度和反射的使用程度之间找到一个平衡点,本文并不打算讲反射,关于反射的心得以后再贴出来,自己最近也在折磨折磨
代理可以分为:StaticProxy 和DynamicProxy
比如:
Package xyz;
import java.util.logging.*
public class talkToSomebody{
private Logger logger=Logger.getLogger(this.getClass().getName());
public void talk(String name){
logger.log(Level.INFO,"talking start....");
System.out.println("Hi!ni hao,"+name);
logger.log(Level.INFO,"talking ends....");
}
}
很显示,你需要talk其他人,其实就只有一个句话是关键的,"Hi!ni hao XXX" ,这才是需要关系的,或者叫核心业务(这个次可能有点牵强),但如果要记录你和哪些人交谈过,哪时候开始的,哪时候结束的,日志功能就是实现这个,这属于业务逻辑,把业务逻辑和核心业务放到了一起,如果哪天不需要记录了,怎么办?得重新改源代码,甚至如果客户只提供给你编译过的class或接口,你会很郁闷的!
解决方法:
用Proxy机制,其实代理就像一个中介机构,我自己突然有什么事(或者不愿意),找中介机构去做,当然你得出钱给中介机构。
public class TalkToSomebody implements ITalk{
public void talk(String name){
System.out.println("Hi,ni hao,"+name);
}
}
不错,中介机构是按照我的要求实现的,结果没错!
public class StaticProxyTalk Implements ITalk{
private Logger logger=Logger.getLogger(this.getClass().getName());
private ITalk somebody;
public StaticProxyTalk(ITalk somebody){
this.somebody=somebody;
}
public void talk(String name){
log("talking start....");
somebody.talk(name);
log("talking ending...");
}
private void log(String message){
logger.log(Level.INFO,message)
}
感觉好多了,以后我不需要中介服务了,不去找他就行,现在看下这个中介机构做得怎么样,达到我的要求了没?
public class TestProxy{
public static void main(String


相关文档:

传智播客java学习 文件的上传下载

今天我学习了文件上传、下载知识,是冯老师讲的课,我做了简单的笔记:
一、文件上传时,要在页面设置:表单元素<input type=“file” />,需要指定表单 enctype 的值为 multipart/form-data
二、          Commons-fileupload 组件上传的基本原理 :
a)& ......

传智播客java学习 Junit和log4j的使用

 我今天学习了,使用junit进行单元测试的知识和使用log4j进行日志管理的知识,我做了简单的笔记:
Junit
JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同 ......

学习java必看

(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译 ......

初识IReport2、JasperReport(java应用)

 报表的生命周期和java类的非常相似,java被一些源文件组成,这些源文件被编译成扩展名为class的文件。同样的一个报表也是iyou一个源代码的问价年来描述的,源文件的扩展名为 . jrxml ,然后被编译成 .jasper文件.
JasperReport 是一个jar库,他提供以下主要类:
net.sf.jasperreports.engine.JasperCompileMan ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号