天天看點

代理模式

為什麼要學習代理模式?應為這就是springAOP的底層!【SpringAOP和SpringMVC】

代理模式的分類:

靜态代理

動态代理

代理模式

角色分析:

抽象角色:一般會使用接口或者抽象類來解決

真實角色:被代理的角色

代理角色:代理真實角色,代理真實角色後,一般會做一些附屬操作

客戶:通路代理對象的人

代碼步驟:

1.接口

2.真實角色

3.代理角色

4.用戶端通路代理角色

代理模式的好處:

可以是真實角色的操作更加純粹!不用去關注一些公共的業務

公告業務也就交給代理角色!實作業務的分工

公告業務發生擴充的時候,友善集中管理

缺點:

一個真實角色就會産生一個代理角色;代碼量會翻倍開發效率會變低

動态代理和靜态代理角色一樣

動态代理的代理類是動态生成的,不是我們直接寫好的

動态代理分為兩大類:基于接口的動态代理,基于類的動态代理

基于接口---JDK動态代理

基于類:cglib

Java位元組碼實作:javasist

需要兩個類:Proxy:代理,InvocationHandler:調用處理程式

InvocationHandler

動态代理的好處:

一個動态代理類代理的是一個接口,一般是一類業務

一個動态代理類可以代理多個類,隻要是實作了同一個接口即可