所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。
系统中经常有这种需求:在某些操作前需要进行验证操作,比如:在添加/删除操作时,先进性用户信息验证,确认该用户是否拥有这些操作的权限。代码如下:
UserManager接口:
public interface UserManager {
public void...
分类:
其他好文 时间:
2014-10-31 01:15:18
阅读次数:
128
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,是函数式编程的一种衍生范型。通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。...
分类:
其他好文 时间:
2014-10-28 17:48:30
阅读次数:
243
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
//接口
interface MyInterface {
public void action();
}
// 被代理类
class MyObject implements ...
分类:
其他好文 时间:
2014-10-27 15:42:35
阅读次数:
179
java动态代理
动态代理是指客户通过代理类来调用其他对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象
动态代理使用场合:
调试
远程方法调用
代理设计模式原理:
使用一个代理将对象包装起来,然后用该代理对象取代原始对象,任何对原始对的调用都要通过代理代理对象决定是否以及何时将方法调用转到原始对象上...
分类:
编程语言 时间:
2014-10-26 23:03:39
阅读次数:
306
粗粒度,细粒度使用代理客户端------>代理对象----->目标对象代理放行了,就调用目标对象的方法静态代理(很少用),动态代理为目标对象创建动态代理对象,Proxy类,jdk提供InvocationHandler其实是回调public class JDKProxyFactory implemen...
分类:
其他好文 时间:
2014-10-26 20:59:12
阅读次数:
151
再讲java动态代理前,先来看看代理模式。Proxy类通过组合,对Hello类进行了增强,并对其进行了委托。代理模式代码:public class ProxyPattern { interface IHello{ void say() ; } static class Hello implement...
分类:
编程语言 时间:
2014-10-26 16:54:40
阅读次数:
251
1. 反射概念及功能
反射就是把Java类中的各种成分映射成相应的Java类。例如一个Java类中用一个Class类的对象来表示。一个类中的组成部分分为成员变量,方法,构造方法,包等等。
Java反射机制主要提供了以下功能: 判断在运行时任意一个对象所属的类;在运行时构造任意一个类的对象;判断在运行时任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
2. Field反射
以下代码将obj对象中的String类型的字段对应的V...
分类:
编程语言 时间:
2014-10-26 06:50:05
阅读次数:
220
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是...
分类:
编程语言 时间:
2014-10-24 18:17:24
阅读次数:
253
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。Java代码packagedynamic.proxy...
分类:
其他好文 时间:
2014-10-23 14:00:10
阅读次数:
263
Hibernate是基于缓存机制实现的。Hibernate的缓存包括:一级缓存、二级缓存和查询缓存。
Hibernate中支持懒加载load,也支持及时加载get。Hibernate采用CGlib的动态代理实现延迟加载。延迟加载采用CGlib的Enhancer类动态生成类。
比较
下面对Hibernate中一级缓存、二级缓存、查询缓存机制做一个横向比较:
相同点:
1、均为缓存,均可在一定的条件下缓存数据;
2、Hibernate的查询实现,是基于缓存机制;
3、三种缓存方式的内部实现方式...
分类:
Web程序 时间:
2014-10-22 11:07:19
阅读次数:
282