/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠF orte Sc ar let ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ Ġ* ĠProject Ġ Ġsimple - robot Ċ Ġ* Ġ Ġ* ĠFile ĠĠĠĠ ĠMir ai Avatar . kt Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠYou Ġcan Ġcontact Ġthe Ġauthor Ġthrough Ġthe Ġfollowing Ġchannels : Ċ Ġ* Ġ Ġ* Ġgithub Ġhttps :// github . com / F orte Sc ar let Ċ Ġ* Ġ Ġ* Ġg itee Ġ Ġhttps :// g itee . com / F orte Sc ar let Ċ Ġ* Ġ Ġ* Ġemail Ġ ĠF orte Sc ar let @ 1 6 3 . com Ċ Ġ* Ġ Ġ* ĠQQ ĠĠĠĠĠ 1 1 4 9 1 5 9 2 1 8 Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġlove . fort e . sim bot . intercept Ċ Ċ import Ġlove . fort e . sim bot . Context Ċ import Ġlove . fort e . sim bot . constant . Priority Constant ĊĊ Ċ /** Ċ Ġ* Ġ éĵ¾ å¼ı æĭ ¦ æĪª åĻ¨ ãĢĤ Ċ Ġ* Ċ Ġ* Ġ éĵ¾ å¼ı æĭ ¦ æĪª åĻ¨ ä¸įåŃĺåľ¨ boolean ç±»åŀĭçļĦ è¿ĶåĽŀ ä½ľä¸º æĺ¯åĲ¦ æĭ ¦ æĪª çļĦ ä¾Ŀ æį® ï¼Į Ċ Ġ* Ġ èĢĮ æĺ¯ ä»¥ Ġ[ æĶ¾ è¡Į ( pass )][ Intercept Chain . pass ] Ġ åıĸ ä»£ äºĨ Ġboolean ç±»åŀĭçļĦ Ġ[ æĭ ¦ æĪª ][ Interceptor . intercept ] ãĢĤ Ċ Ġ* Ċ Ġ* Ġ éĵ¾ å¼ı æĭ ¦ æĪª ä¸İ å¸ĥ å°Ķ æĭ ¦ æĪª çļĦ åĮº åĪ« åľ¨ äºİ ï¼Į éĵ¾ å¼ı æĭ ¦ æĪª åı¯ä»¥åľ¨ æĶ¾ è¡Į æĪĸ æĭ ¦ æĪª åĲİ æī§è¡Į æĽ´å¤ļ çļĦ æĵįä½ľ ãĢĤ Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ| ĠA Ġ| Ċ Ġ* ĠĠ Ġ| Ġ-------- > Ġ| ĠB Ġ| Ċ Ġ* ĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ-------- -> Ġ| Ġtail Ġ| Ċ Ġ* ĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ċ Ġ* ĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ< --------- Ġ| Ġtail Ġ| Ċ Ġ* ĠĠ Ġ| Ġ< -------- Ġ| ĠB Ġ| Ċ Ġ* Ġ| ĠA Ġ| Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ property ĠT Ġæĭ ¦ æĪª ä¸» ä½ĵ çļĦ ç±»åŀĭ ï¼Į åį³ æĭ ¦ æĪª çļĦæĹ¶åĢĻ æīĢ æıĲä¾Ľ ç»Ļ æĭ ¦ æĪª åĻ¨ çļĦ ä¸»è¦ģ ä¿¡æģ¯ åĨħå®¹ ãĢĤ Ċ Ġ* Ġ@ property ĠR Ġ éĵ¾ å¼ı æĭ ¦ æĪª åĻ¨ ä¸Ń æĶ¾ è¡Į Ġ([ Intercept Chain . pass ]) Ġ èĩ³ ä¸ĭ ä¸ĢæĿ¡ éĵ¾ æīĢ åı¯ä»¥ å¾ĹåĪ° çļĦ ç»ĵæŀľ åĢ¼ ç±»åŀĭ ãĢĤ Ċ Ġ* Ġ@ property ĠCH Ġæĭ ¦ æĪª åĻ¨ éĵ¾ [ Intercept Chain ] çļĦ åħ·ä½ĵ ç±»åŀĭ ãĢĤ Ċ Ġ* Ġ@ property ĠCO Ġå½ĵåīį éĵ¾ å¼ı æĭ ¦ æĪª åĻ¨ æīĢ å¯¹åºĶçļĦ ä¿¡æģ¯ ä¸» ä½ĵ ç±»åŀĭ ãĢĤ Ċ Ġ*/ Ċ public Ġinterface ĠCh ained Interceptor < T , ĠR , ĠCH Ġ: ĠInter cept Chain < T , ĠCO , ĠR >, ĠCO Ġ: ĠContext < T >> Ġ: ĠComparable < Interceptor < T , ĠCO >> Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į å½ĵåīį éĵ¾ å¼ı æĭ ¦ æĪª åĻ¨ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchained Intercept ( context : ĠCO , Ġchain : ĠCH ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æİĴåºı åĢ¼ ï¼Į é»ĺè®¤ åį³ ä¸º æľĢ ä½İ åĢ¼ ãĢĤ ä¸ĢèĪ¬ æĥħåĨµä¸ĭ åı¯ä»¥ ä¸į çĶ¨ éĩį åĨĻ æŃ¤ æĸ¹æ³ķ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠĠĊĠĠĠ Ġval Ġpriority : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠPriority Constant . LAST ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æİĴåºı ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠInter ceptor < T , ĠCO >): ĠInt Ġ= Ġpriority . compareTo ( other . priority ) Ċ } ĊĊ Ċ /** Ċ Ġ* Ġ éĵ¾ å¼ı æĭ ¦ æĪª åĻ¨ çļĦ éĵ¾ ï¼Į çĶ¨äºİ pass åĪ° ä¸ĭ ä¸ĢæĿ¡ éĵ¾ ãĢĤ Ċ Ġ*/ Ċ public Ġinterface ĠInter cept Chain < T , ĠC : ĠContext < T >, Ġout ĠR > Ġ{ ĊĠĠĠ Ġfun Ġpass ( context : ĠC ): ĠR ? Ċ } ĊĊ Ċ /** Ċ Ġ* Ġ[ Chain ed Interceptor ] Ġ ä½ľä¸º éĵ¾ å¼ı æľĢ ç»ĵ å°¾ çļĦ æĬ½ è±¡ ç±» ãĢĤ Ċ Ġ* Ġ éĵ¾ å¼ı æĭ ¦ æĪª åĻ¨ çļĦ æľĢç»Ī éĵ¾ éĥ¨åĪĨ ï¼Į ä¸ĢèĪ¬ æĿ¥ è®² ï¼Į åħ¶ æŃ£ å¥½ å¯¹åºĶ äºĨ æĭ ¦ æĪª å¯¹è±¡çļĦ ä¸» ä½ĵ æľ¬ èº« ãĢĤ Ċ Ġ*/ Ċ public Ġabstract Ġclass ĠCh ained Interceptor Tail < T , ĠR , ĠCH Ġ: ĠInter cept Chain < T , ĠCO , ĠR >, ĠCO Ġ: ĠContext < T >> Ġ: ĊĠĠĠ ĠCh ained Interceptor < T , ĠR , ĠCH , ĠCO > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¯· ä¸įè¦ģ éĩį åĨĻ æŃ¤ æĸ¹æ³ķ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġchained Intercept ( context : ĠCO , Ġchain : ĠCH ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Pass ( context ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į æŃ¤ ä¸» ä½ĵ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġdo Pass ( context : ĠCO ): ĠR ? Ċ } ĊĊ