<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      Fork me on GitHub

      設計模式:代理、裝飾和適配器模式的區(qū)別

      結構對比

      講實話,博主當初學習完整設計模式時,這三種設計模式單獨摘哪一種都是十分清晰和明確的,但是隨著模式種類的增加,在實際使用的時候竟然會出現(xiàn)恍惚,例如讀開源代碼時,遇到不以模式命名規(guī)范的代碼時,一時難以說清具體是使用的這三種里的哪一種。

      之所以會出現(xiàn)混淆的原因是,三種模式的實現(xiàn)都是基于面向接口這一思想,三種模式都是針對某一個具體的接口實現(xiàn),并在其實現(xiàn)類上用一個對象對另一個對象提供間接訪問。

      基于混淆點,從類圖上來看,適配器模式就可以最先被區(qū)別出來,適配器的類結構圖

      從類圖上來看,適配器的主角是Adapter這個類,這個類與目標接口是實現(xiàn)關系,但是Adaptee則不同,它可以是一個接口,也可以是一個具體的類,它是與Target平級的一個對象,與Target毫無關系,而Adapter與它的關系是對象組合,是Adaptee作為Adapter的一個內(nèi)部成員變量,Adapter的目的是將 Adaptee適配為Target。

      ?

      相比于適配器模式,代理模式和裝飾模式反而更容易被混淆, 混淆的原因是二者都是基于一個公共接口,且主角類(Proxy和Decorator)又都是以組合對象的形式,對目標對象(RealSubject和ConcreteComponent)進行二次操作。實現(xiàn)上來看,兩者十分相似。

      但是注意,這里還是有不同,

      • 代理模式是代理對象(Proxy)對實際被代理對象(RealSubject)的間接訪問,是對公共接口的實現(xiàn)類提供間接訪問;
      • 而裝飾模式的裝飾類是對被裝飾接口或者說被裝飾基類(Component)提供間接訪問,不是對接口(Component)的實現(xiàn)類提供間接訪問

      也就是說,兩者提供間接訪問的對象不同,一個(代理模式)是基于具體的類,而另一個(裝飾模式)是基于抽象的接口 。這也是為什么只可以使用一次的request對象要基于裝飾模式提供封裝來達到二次使用的原因(詳細可翻閱設計模式:從HttpServletRequestWrapper了解裝飾者模式),基于抽象接口提供的間接訪問是不會破壞具體對象的內(nèi)容。

      本質(zhì)對比

      適配器模式的本質(zhì)

      適配器模式的主要功能是進行轉(zhuǎn)換匹配,目的是復用已有的功能,而不是來實現(xiàn)新的接口。也就是說,客戶端需要的功能應該是已經(jīng)實現(xiàn)好了的,不需要適配器模式來實現(xiàn),適配器模式主要負責把不兼容的接口轉(zhuǎn)換成客戶端期望的樣子就可以了。

      適配器的本質(zhì)是轉(zhuǎn)換功能,以提高復用性。不同于代理和裝飾,適配器中的目標對象可能與需要適配的對象毫無關系,適配過程中代碼甚至是全量的重寫,它的目標是將兩個內(nèi)容沿其中某個為主進行融合。

      代理模式的本質(zhì)

      代理模式是通過創(chuàng)建一個代理對象,用這個代理對象去代表真實的對象,客戶端得到這個代理對象后,對客戶端并沒有什么影響,就跟得到了真實對象一樣來使用。當客戶端操作這個代理對象的時候,實際上功能最終還是會由真實的對象來完成,只不過是通過代理操作的,也就是客戶端操作代理,代理操作真正的對象。
      正是因為有代理對象夾在客戶端和被代理的真實對象中間,相當于一個中轉(zhuǎn),那么在中轉(zhuǎn)的時候就有很多花招可以玩,比如,判斷一下權限,如果沒有足夠的權限那就不進行中轉(zhuǎn)了,或者中轉(zhuǎn)到別的操作中。

      代理模式的運行邏輯:

      代理模式的本質(zhì)是控制對象訪問。核心在于Proxy角色, 類似于中間商,是目標對象的一個“前沿發(fā)言人”,你想要訪問目標對象,或者購買目標廠家的商品,必須從我代理商這里走, 我甚至可以不創(chuàng)建被代理對象,自己冒充被代理對象(直接以貼牌產(chǎn)品當作目標產(chǎn)品賣你)。

      裝飾模式的本質(zhì)

      裝飾模式能夠?qū)崿F(xiàn)動態(tài)地為對象添加功能,是從一個對象外部來給對象增加功能,相當于是改變了對象的外觀。當裝飾過后,從外部使用系統(tǒng)的角度看,就不再是使用原始的那個對象了,而是使用被一系列的裝飾器裝飾過后的對象。這樣就能夠靈活地改變一個對象的功能,只要動態(tài)組合的裝飾器發(fā)生了改變,那么最終所得到的對象的功能也就發(fā)生了改變。從這一點上來講,代理模式也可以滿足,但是不同的是,裝飾模式這里有一個代理無法越過的原則,那就是代理模式必須有目標對象,否則裝飾就無從談起。

      裝飾模式的本質(zhì)是通過組合來加強目標對象的能力,是對象能力的延申。裝飾模式是在原有對象的基礎上進行外層包裝,可以對目標對象的每一個方法都進行前置、后置的補充和加強,但是本質(zhì)上并沒有改變原對象,是一種擴展思維,這一點可以參考AOP的思想。

       

      ?

      posted @ 2024-07-28 18:14  糖拌西紅柿  閱讀(765)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 熟妇的奶头又大又长奶水视频| 五月婷婷激情视频俺也去淫| 久久国产精品福利一区二区三区| 亚洲色av天天天天天天| 午夜福利免费视频一区二区| 99久久久国产精品消防器材| 国内不卡不区二区三区| 亚洲中文字幕人妻系列| 国产精品久久亚洲不卡| 免费无码黄网站在线观看| 一道本AV免费不卡播放| 亚洲中文字幕无码专区| 蜜臀av入口一区二区三区| 人人妻人人添人人爽日韩欧美| 亚洲男人AV天堂午夜在| 日本熟妇乱一区二区三区| 国产又色又爽又黄的在线观看 | 久久中文字幕日韩无码视频| 中文字幕国产精品自拍| 成人综合婷婷国产精品久久蜜臀| 加勒比在线中文字幕一区二区| 重口SM一区二区三区视频| 夜夜爽77777妓女免费看| 国产成人亚洲综合色婷婷秒播| 人人澡人摸人人添| 美腿丝袜亚洲综合在线视频| 亚洲AV无码东方伊甸园| 免费人成视频网站在线观看18| 久久午夜无码鲁丝片直播午夜精品| 欧美日韩中文字幕久久伊人| 少妇av一区二区三区无码| 国产999久久高清免费观看| 国产美女高潮流白浆视频| 天天澡天天揉揉av无码| 日本一区不卡高清更新二区| 衡山县| 中文字幕亚洲人妻一区| 高清破外女出血AV毛片| 南安市| 国产熟睡乱子伦视频在线播放| 久久久精品国产精品久久|