就于对于对象方法的增强的总结,对象方法增强总结

 

最近在学习的是过滤器,在处理网页的中文乱码问题的时候,用到的是在doFilter中用的是一个包装类,进行对getParamter
()方法的重写,然后就想着进行可以增强对象方法的方式进行一个总结,好吧,废话不多说

第一种是继承

子类继承父类,直接对方法进行重写, 这种应该都懂

第二种 ,动态代理

动态代理,主要是通过Proxy 与InvocationHandler
两个接口进行处理,并同时利用了反射

在创建代理对象的时候,可以有两种方式,一种是通过Proxy的静态方法
getProxyClass(参数1,参数2)是生成一个代理类,但是其实在后期实例化对象的时候,还是需要一个InvocationHandler的实例对象,因为他是一个调用处理程序的接口,里面的invoke的方法,里面可以实现方法的增强

在者可以直接建立一个代理实例对象,用Proxy的静态方法getProxyInstance(参数1,参数2,参数3);

参数一,是要被代理的类加载器,

参数二, 要实现的所有的接口的数组Class[]  

参数三 ,就是一个InvocationHandler的实例化对象 
该对象也有三个参数,依次是:代理对象,方法,参数数组Object[]

 

扩展:面向切面编程AOP中的AOP代理,后期在介绍

第三种  装饰者模式

1.就是增强类与被增强类要实现同一个接口

2.被增强类作为参数放在增强类中作为参数,然后在增强类中定义一个成员变量,把参数即被增强类的实例化对象通过构造方法传给增强类,此时,该类就具备了被增强类的所有的方法及属性,

3, 然后在类中,可以选择是否对被增强类的方法进行重写

 

总结:

为什么

使用对方法的增强,可以降低代码之间的耦合性,在后期的代码处理的时候,可以不用动之前定义好的代码,可以更好的对数据的维护,

继承与装饰者模式的区别

继承
 
是直接成为他的子类,继承体系可能会造成臃肿,扩展性不好,类与类之间的耦合性增高,继承只能单继承,

装饰者模式 是直接把该类的实例化对象作为参数传入
,在后期的维护中,因为耦合性的不高,可以不修改源代码。直接进行修改和增强,会非常方便,可以传入多个实现类对象

 

最后:
哈哈哈哈,哪里有错的记得提醒下小仙,修仙路漫漫,来日方长,我要去跑步了。。。     

后续………

—恢复内容结束—

最近在学习的是过滤器,在处理网页的中文乱码问题的时候,用到的是在doFilter中用的…

 

 

最近在学习的是过滤器,在处理网页的中文乱码问题的时候,用到的是在doFilter中用的是一个包装类,进行对getParamter
()方法的重写,然后就想着进行可以增强对象方法的方式进行一个总结,好吧,废话不多说

最近在学习的是过滤器,在处理网页的中文乱码问题的时候,用到的是在doFilter中用的是一个包装类,进行对getParamter
()方法的重写,然后就想着进行可以增强对象方法的方式进行一个总结,好吧,废话不多说

第一种是继承

第一种是继承

子类继承父类,直接对方法进行重写, 这种应该都懂

子类继承父类,直接对方法进行重写, 这种应该都懂

第二种 ,动态代理

第二种 ,动态代理

动态代理,主要是通过Proxy 与InvocationHandler
两个接口进行处理,并同时利用了反射

动态代理,主要是通过Proxy 与InvocationHandler
两个接口进行处理,并同时利用了反射

在创建代理对象的时候,可以有两种方式,一种是通过Proxy的静态方法
getProxyClass(参数1,参数2)是生成一个代理类,但是其实在后期实例化对象的时候,还是需要一个InvocationHandler的实例对象,因为他是一个调用处理程序的接口,里面的invoke的方法,里面可以实现方法的增强

在创建代理对象的时候,可以有两种方式,一种是通过Proxy的静态方法
getProxyClass(参数1,参数2)是生成一个代理类,但是其实在后期实例化对象的时候,还是需要一个InvocationHandler的实例对象,因为他是一个调用处理程序的接口,里面的invoke的方法,里面可以实现方法的增强

在者可以直接建立一个代理实例对象,用Proxy的静态方法getProxyInstance(参数1,参数2,参数3);

在者可以直接建立一个代理实例对象,用Proxy的静态方法getProxyInstance(参数1,参数2,参数3);

参数一,是要被代理的类加载器,

参数一,是要被代理的类加载器,

参数二, 要实现的所有的接口的数组Class[]  

参数二, 要实现的所有的接口的数组Class[]  

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注