<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-200  評論-148  文章-15  trackbacks-0

    攔截器:

    1、首先要有一個目標對象,要攔截誰

    2、攔截對象,攔截器本身只是一個普通的類

    3、對目標對象所生成的一個代理對象,真正去執行的是代理對象,代理對象也是有若干個方法

    由系統動態產生出來的,并不是我們去寫出來的,代理對象的方法與目標對象的方法很類似,但是

    代理對象的方法是綜合了攔截器的方法和跟你的系統的目標對象的方法,將其綜合起來,就形成了代

    理對象的方法,也就是說代理方法是攔截器方法與目標對象方法的一個結合體

    示例:


    新增一個類Target.java  就是我們的目標對象,在使用目標對象之前要有一個接口,要求我們向對接口

    編程,即先生成一個接口TargetInterface,并生成一個方法,此接口是一個普通的接口;Target類實現

    TargetInterface接口,在此Target就是目標對象,我們要攔截它Target

    目標有了,現在就是要寫個攔截器對象:Interceptor.java  在攔截器里面我們定義兩個方法:before()、

    after();其攔截器跟我們平時看到的類沒有什么太大的區別,之所以叫攔截器是其行為而言的;

    java對象的動態代理是要用到反射;生成一個處理器類MyHandler實現反射接口InvocationHandler

    其作用是將要處理的對象注入到這個處理器類里面來,動態的來調用。

    在MyHandler中方法invoke()方法是真正去調用的方法。


    再生成一個代理類MyProxy作用是產生一個代理,方法以getProxy()  得到一個代理,在此要用到

    Proxy類,通過newProxyInstance,new一個代理出來;

    理清的關系:


    Target是目標對象,是目標,代理誰

    Interceptor是攔截器,將方法動態的插入到目標對象Target方法之前或是之后去執行

    在些Target與Interceptor互相不知道,Target不知道被誰插入,Interceptor也不知道插入到哪里。

    因此在這聲明一個MyHandler處理器,真正去調用目標對象方法,調用目標對象方法之前,執行攔截器的before


    (),調用目標對象方法之后執行攔截器的after();

    還有一個最重要的代理對象MyProxy,有一個getProxy()方法,傳過來目標對象,在此將目標對象set到處理器里


    面去myHandler.setObject(object);然后返回一個代理實例,通過代理實例來調用目標對象的方法,目標對象方


    法執行之后就會去調用攔截器,則相當于攔截器對其攔截了。




    總結攔截器:

    角色:

    1、被攔截的對象或目標,目標對象的方法被攔截

    2、攔截器本身,普通的class類,行為上來說起到了攔截別人的作用

    3、代理,通過代理生成對目標對象的一個代理,執行的不是目標對象,而是代理,在代理中已經插入了攔截器


    ,這樣的作用是降低偶合

    目標對象與攔截器本身是互不關聯的,低偶合,通過myHandler/myporxy來偶合,在struts2中是通過xml配置文件

    來偶合的.代碼程次是不偶合的.

     


    攔截器底層實現就是動態代理實現的。

    posted on 2010-10-25 12:37 無聲 閱讀(3151) 評論(1)  編輯  收藏

    評論:
    # re: 攔截器底層實現原理 2016-07-02 14:35 | ttt
    政治  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲va精品中文字幕| 亚洲免费福利在线视频| 亚洲人成免费网站| 无码天堂亚洲国产AV| 亚洲国产综合91精品麻豆| 亚洲第一网站免费视频| 国产亚洲精品AAAA片APP| 国产亚洲美女精品久久久2020| 日本妇人成熟免费中文字幕| 视频免费1区二区三区| 亚洲高清日韩精品第一区| 亚洲国产精品综合久久一线| 97在线视频免费| 久久er国产精品免费观看8| 亚洲国产日韩视频观看| 国产成人亚洲综合无码精品| 午夜高清免费在线观看| 无码国产精品一区二区免费3p| 黄网站色视频免费看无下截 | 曰批全过程免费视频在线观看无码 | 最近中文字幕大全免费视频| 91福利免费网站在线观看| 亚洲国产精品一区二区三区在线观看| 亚洲精品无码成人片久久| 又粗又大又长又爽免费视频| 国产成人免费爽爽爽视频| av永久免费网站在线观看 | 96免费精品视频在线观看| XXX2高清在线观看免费视频| 羞羞漫画登录页面免费| 亚洲精品成a人在线观看☆ | 一个人免费观看视频在线中文| 国产精品亚洲一区二区在线观看| 91亚洲精品麻豆| 91精品国产亚洲爽啪在线影院| 亚洲成a人片在线观看无码| 国产亚洲视频在线播放| 亚洲日韩v无码中文字幕| 亚洲国产精品一区二区久久hs| 一本色道久久综合亚洲精品高清| 亚洲美女高清一区二区三区|