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

JAVA动态代理内部实现


JAVA动态代理内部实现
一 代理设计模式
代理模式为目标对象提供一种代理以控制对实际对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
为了保持行为的一致性,代理类和实际委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。

 代理模式类图  
常见的代理有:
1) 远程代理(Remote proxy):对一个位于不同的地址空间对象提供一个局域代表对象,如RMI中的stub。 
2) 虚拟代理(Virtual proxy):根据需要将一个资源消耗很大或者比较复杂的对象,延迟加载,在真正需要的时候才创建。
3) 保护代理(Protect or Access Proxy):控制对一个对象的访问权限。
4) 智能引用(Smart Reference Proxy):提供比目标对象额外的服务和功能。
通过代理类这一中间层,能够有效控制对实际委托类对象的直接访问,也可以很好地隐藏和保护实际对,实施不同的控制策略,从而在设计上获得了更大的灵活性。
二 动态代理使用
JAVA动态代理机制以巧妙的方式实现了代理模式的设计理念。

动态代理类图
动态代理在代理ProxySubject和RealSubject之间增加了InvocationHandler,这是一种通信间接化, 增加了灵 性性,例如可以把这个中间层实现为一个框架Framework,直接通过xml文件等方式来调用RealSubject。
在普通的设计中,我们一般不会使用动态代理。但是在一些框架结构设计中,动态代理非常重要,如RMI,EJB中都使用动态代理。
view plaincopy to clipboardprint?
interface Subject   
{   
  public void doSomething();   
}   
class RealSubject implements Subject   
{   
  public void doSomething()   
  {   
    System.out.println( "call doSomething()" );   
  }   
}   
class ProxyHandler implements InvocationHandler   
{   
  private Object proxied;   
     
  public ProxyHandler( Object proxied )   
  { &n


相关文档:

Java基础、Java Web问答

1.       String、StringBuffer、StringBuilder的区别
String不变对象,StringBuffer可变字符串,方法为synchronized,StringBuilder可变字符串,方法非synchronized
 
2.       finally、final、finalize的区别
finally在try-cache-finally中使用; ......

用Java写爬网页的小工具

其实也不是爬网页,只是从一个XML文件取URL,然后抓取网页内容。
主要有几点,备忘:
1. 全局代理,设置之后所有的URL都使用此代理,这样可以直接调用FileUtils.copyURLToFile:
private void initProxy(String host, int port,
final String username, final String password) {
Authenticator.setDefault(new Aut ......

传智播客JAVA培训2010 5 8OA第二天总结


传智播客JAVA培训2010-5-8OA第二天总结
一直以来,都听到这样的话,今天又在网上看到了这样一句话“写出一行代码往往比理解一行代码更重要。因为理解问题也许仅是一个数学上或实验上的技能而已,而写出一行新的代码,却需要有创造性的”。这毫无疑问的表显出来,学程序的最基本道理。当我们报着算法的书籍在啃 ......

Java 设计架构

目录
摘要 ……………………………………………………………………2
文献综述 ……………………&hel ......

java语言SUN公司标准编码规范

Java语言编码规范(Java Code Conventions)SUN标准
 
 
1 介绍(Introduction)1.1 为什么要有编码规范(Why Have Code Conventions)1.2 版权声明(Acknowledgments)2 文件名(File Names)2.1 文件后缀(File Suffixes)2.2 常用文件名(Common File Names)3 文件组织(File Organization)3.1 Java源文件(Java Source Fi ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号