浅谈JAVA中“增强”类的某个方法的几个中方法!

此页面是否是列表页或首页?未找到合适正文内容。

浅谈JAVA中“增强”类的某个方法的几个中方法!

标签:rrimanxtendethhismethodnull获取ade

一、继承 使用场景:能够控制这个类的构造的时候,才可以使用继承。  优点:简单容易使用, 缺点:耦合性大大的增强,不利于后期的维护,所以对于继承这种方法,谨慎使用。 代码实现:二、装饰者模式 使用场景:1、包装对象和被包装对象实现相同的接口      2、包装的对象中需要获得到被包装对象的引用。 缺点:如果接口的方法比较多,增强其中某个方法,其他的功能的方法需要原有的调用; 代码实现: /** * 装饰者模式: * 增强request的getParameter方法,使其编码格式为utf-8 */ public class MyServletRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public MyServletRequest (HttpServletRequest request) { super(request); this.request=request; } @Override //重写getParameter方法 public String getParameter(String name) { String value = http://www.mamicode.com/request.getParameter(name); try { value=http://www.mamicode.com/new String(value.getBytes(\”iso-8859-1\”),\”utf-8\”); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return value; } 三、动态代理 使用场景:被增强的对象必须实现接口。 需求:(1)定义一个服务员接口 // 服务员 public interface Waiter { // 服务 public void serve(); } (2)一个男服务员的类并实现服务员接口。男服务员有个方法是服务。 public class ManWaiter implements Waiter { public void serve() { System.out.println(\”服务中…\”); } } 现在想让男服务员在服务的时候有礼貌,需要在服务的方法前后加上礼貌用语。 动态代理实现代码: public class Demo { @Test public void fun1() { Waiter manWaiter = new ManWaiter();//目标对象 /* * 给出三个参数,来创建方法,得到代理对象 */ ClassLoader loader = this.getClass().getClassLoader(); Class[] interfaces = {Waiter.class}; InvocationHandler h = new WaiterInvocationHandler(manWaiter);//参数manWaiter表示目标对象 // 得到代理对象,代理对象就是在目标对象的基础上进行了增强的对象!

作者: liuzhihao

为您推荐

返回顶部