1. 程式人生 > >代理模式和工廠模式

代理模式和工廠模式

1、代理模式(1、代理類和被代理物件;2、被代理物件不想去執行的方法;3、代理) 1.1、JDK動態代理(位元組碼重組) 代理類實現介面 invocationHandler ,實現invoke 方法,和獲取getInstance()方法獲取代理物件$Proxy0 h.invoke()通過介面呼叫被代理物件的方法 jdk動態代理,必須有介面,實現類實現介面中的為實現的 方法。

手寫動態代理: 定義位元組的classLoader,findClass方法讀取生成的代理物件Proxy0InvocationHandlerinvokeProxyProxy0 定義自己的InvocationHandler 定義invoke方法 定義自己的Proxy 代理物件 自己寫的程式碼生成代理類“

Proxy0”,有generate生成程式碼的方法,讀取原始碼,編譯,用ClassLoader把位元組碼載入到jvm 中。返回代理物件(一般是通過constructor), 1.2、cglib動態代理 不用是基於介面的代理 代理類 implements MethodInterceptor,實現intercepter方法, cglib是利用 Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(target.getClass());//被代理類 enhancer.setCallback(this); return enhancer.create(); 利用以上程式碼獲取被代理類的子類,so在interceptor 方法中,要用 method.invokeSupper(o,args);執行代理方法

2、工廠模式 簡單工程模式:定義介面(規則),定義的多個實現類(實現給定的規則),當不同的資料時,返回不同型別的實現