欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
3種代理的實(shí)現

 

摘要筆記:代理實(shí)現了方法的擴充。代理都要實(shí)現接口,static--被代理類(lèi)的接口;

dynamic--InvocationHandler,實(shí)現invoke方法創(chuàng )建對象object傳給method.invoke(object,orgs)--執行代理方法;

CGLIB--MethodInterceptor,創(chuàng )建對象object并重寫(xiě)intercept方法,通過(guò)method.invoke--執行代理。

接口

//Person.java
1 package heqing.spring.proxy;
2
3 public interface Person {
4 public void say();
5 }

具體類(lèi)

 //Student.java
1
package heqing.spring.proxy;
2
3 public class Student implements Person {
4 private String sname;
5 public Student() {
6 sname="Student";
7 }
8 public void say() {
9 System.out.println("My name is "+sname+",I'm a student");
10 }
11 }
//Teacher.java
 package heqing.spring.proxy;
1 public class Teacher implements Person {
2 private String tname;
3 public Teacher() {
4 tname="teacher";
5 }
6 public void say() {
7 System.out.println("My name is "+tname+",I'm a teacher");
8 }
9 }

靜態(tài)代理,動(dòng)態(tài)代理,CGLIB代理

//StaticProxy
1 package heqing.spring.proxy;
2
3 public class StaticProxy implements Person {
4 private Person person;
5 public StaticProxy(Person person) {
6 this.person=person;
7 }
8 @Override
9 public void say() {
10 System.out.println("I'm StaticProxy.");
11 person.say();
12 System.out.println("I'm over Excute");
13 }
14 }

 //DynamicProxy.java
1 package heqing.spring.proxy;
2
3 import java.lang.reflect.InvocationHandler;
4 import java.lang.reflect.Method;
5 import java.lang.reflect.Proxy;
6
7 public class DynamicProxy implements InvocationHandler {
8 private Object obj;
9 public Object createInstance(Object obj){
10 this.obj=obj;
11 return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
12 }
13
14 @Override
15 public Object invoke(Object proxy, Method method, Object[] args)
16 throws Throwable {
17 System.out.println("I'm DynamicProxy");
18 Object result=method.invoke(obj, args);
19 return null;
20 }
21 }

 //CGLIBProxy.java
1 package heqing.spring.proxy;
2
3 import java.lang.reflect.Method;
4
5 import net.sf.cglib.proxy.Enhancer;
6 import net.sf.cglib.proxy.MethodInterceptor;
7 import net.sf.cglib.proxy.MethodProxy;
8
9 public class CGLIBProxy implements MethodInterceptor {
10 Object obj;
11 public Object createInstance(Object object){
12 obj=object;
13 Enhancer enchaner=new Enhancer();
14 enchaner.setSuperclass(obj.getClass());
15 enchaner.setCallback(this);
16 return enchaner.create();
17 }
18 @Override
19 public Object intercept(Object Proxy, Method method, Object[] args,
20 MethodProxy methodProxy) throws Throwable {
21 System.out.println("I'm MethodInterceptor");
22 Object result=method.invoke(obj, args);
23 System.out.println(method.getName());
24 return result;
25 }
26 }

測試類(lèi)

1 //TestStaticProxy.java
2 package heqing.spring.proxy;
3
4 public class TestStaticProxy {
5 public static void main(String[] args) {
6 StaticProxy sp=new StaticProxy(new Student());
7 sp.say();
8 }
9 }
 1 //TestDynamicProxy.java
2 package heqing.spring.proxy;
3
4 public class TestDynamicProxy {
5 public static void main(String[] args) {
6 DynamicProxy dynamicProxy=new DynamicProxy();
7 Person t=(Person)dynamicProxy.createInstance(new Student());
8 t.say();
9 }
10 }
 1 //TestCGLIBProxy.java
2 package heqing.spring.proxy;
3
4 public class TestCGLIBProxy {
5 public static void main(String[] args) {
6 CGLIBProxy proxy=new CGLIBProxy();
7 Person person=(Person)proxy.createInstance(new Teacher());
8 person.say();
9 }
11 }
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
【轉】輕松學(xué),Java 中的代理模式及動(dòng)態(tài)代理
設計模式--代理模式 - 設計模式
struts2學(xué)習筆記(8)——攔截器原理
java的動(dòng)態(tài)代理機制詳解 - xiaoluo501395377 - 博客園
java反射機制與動(dòng)態(tài)代理(三)
Spring AOP 本質(zhì)系列之動(dòng)態(tài)代理
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久