[Java动态代理] 设计模式之代理模式

静态代理就不说了 太简单了、没什么好说的、动态代理简易的代码演示

 1 import java.lang.reflect.InvocationHandler;
2 import java.lang.reflect.Method;
3 import java.lang.reflect.Proxy;
4
5 //调用的客户端
6 public class Client {
7 public static void main(String[] args) {
8 RealSubject realSubject = new RealSubject(); // 真实角色
9 InvocationHandler handler = new DynamicProxy(realSubject);// 动态代理
10 Class<?> classType = handler.getClass();
11
12 // 动态创建了一个了class
13 Subject subject = (Subject) Proxy.newProxyInstance(classType
14 .getClassLoader(), realSubject.getClass().getInterfaces(),
15 handler);
16
17 subject.request();
18 }
19 }
20
21 // 代理角色
22 class DynamicProxy implements InvocationHandler {
23
24 private Object subject;
25
26 public DynamicProxy(Object subject) {
27 this.subject = subject;
28 }
29
30 @Override
31 public Object invoke(Object proxy, Method method, Object[] args)
32 throws Throwable {
33 System.out.println("before calling: " + method);
34
35 // 使用反射机制调用方法
36 method.invoke(this.subject, args);
37
38 System.out.println("after calling: " + method);
39 return null;
40 }
41 }
42
43 // 抽象角色
44 interface Subject {
45 public void request();
46 }
47
48 // 真实角色
49 class RealSubject implements Subject {
50 @Override
51 public void request() {
52 System.out.println("from real subject");
53 }
54 }



My New Blog : http://blog.fdlife.info/ The more you know, the less you believe.
原文地址:https://www.cnblogs.com/ForDream/p/2329366.html