JAVA代理模式

来源:互联网 发布:查看进程占用的端口 编辑:程序博客网 时间:2024/06/05 03:13

代理模式一般涉及到的角色分为三种:抽象角色、代理角色和真实角色。

抽象角色是指真实角色和代理角色的共同接口。

代理角色内部含有对真实角色的引用,从而可以操作真实对象。

真实对象:真正完成操作的对象,只能通过代理角色使用。


动态代理

public interface Subject{abstract public void request();}<pre class="java" name="code">class RealSubject implements Subject{@Overridepublic void request(){// TODO Auto-generated method stubSystem.out.println("from realsubject");}}

import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class DanomicProxy implements InvocationHandler{public Object obj;public DanomicProxy(Object obj){// TODO Auto-generated constructor stubthis.obj = obj;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable{// TODO Auto-generated method stubSystem.out.println("before calling");method.invoke(obj, args);System.out.println("after calling");return null;}}
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;public class InvocationTest{public static void main(String[] args){RealSubject realSubject = new RealSubject();InvocationHandler handler = new DanomicProxy(realSubject);Class<?> classType = handler.getClass();Subject subject = (Subject) Proxy.newProxyInstance(classType.getClassLoader(), realSubject.getClass().getInterfaces(), handler);subject.request();}}




0 0
原创粉丝点击