摘要:
在远程方法调用中运用代理类图 SimpleClient通过HelloService代理类调用远程对象的方法如上图所示,SimpleClient客户端通过HelloService代理类来调用SimpleServer服务器端的HelloServiceImpl对象的方法。客户端的HelloService代理类也实现了HelloService接口,这可以简化SimpleClient客户端的编程。对于SimpleClient客户端而言,与远程服务器的通信的细节被封装到HelloService代理类中。SimpleClient客户端可以按照以下方式调用远程服务器上的HelloServiceImpl对象的方 阅读全文
摘要:
1. 代理模式代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,如下图所示。代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。◆静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。◆动态代理类:在程序运行时,运用反射机制动态创建而成。2.动态代理类与静态代理类对照的是动态代 阅读全文
摘要:
在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息,以及动态调用对象的方法的功能来自于Java语言的反射(Reflection)机制。Java反射机制主要提供了以下功能: 1.在运行时判断任意一个对象所属的类; 2.在运行时构造任意一个类的对象; 3.在运行时判断任意一个类所具有的成员变量和方法; 4.在运行时调用任意一个对象的方法; 5.生成动态代理。 Reflection 是 Java 被视为动态(或准动态)语言的关键,允许程序于执行期利用Reflection APIs 取得任何已知名称之 阅读全文
摘要:
深入研究java.lang.Class类 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。 Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对象。 虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类(型)都有一个Cl 阅读全文