結構型模式----代理模式

前言

         昨天對裝飾模式做了一個小小的總結,今天想起來還是記憶猶新,果然,通過實例然後總結出來的東西很難忘記啊。那今天就對代理模式來做一個總結。

        代理----顧名思義就是代替別人去做某一件事情。

        我們可以將代理模式具體分爲三大角色,分別爲 Subject(抽象主題角色)、Proxy(代理主題角色)、RealSubject(真實主題角色)。

        Subject(抽象主題角色):可以是抽象類、具體類、接口,是真實主題角色和代理主題角色的共同接口。

        Proxy(代理主題角色):調用真實主題角色方法,可以擴展真實主題角色的功能。

        RealSubject(真實主題角色):實現抽象主題角色具體方法。

實例

          魔幻手機上牛魔王來到了現代,但是這個時代不允許牛魔王的存在,單靠現代人是消滅不了牛魔王的,但是在西遊記中,孫悟空神通廣大,只有請孫悟空來收拾牛魔王了,接下來就是現代人召喚孫悟空,讓孫悟空代替現代人消滅牛魔王的時刻了。

         首先定義一個抽象類,提供一個方法,然後定義一個“殺手類”,用於接收殺手的名稱【此處指的是孫悟空】。

        然後是定義一個下命令的角色,此處也就是【現代人】,來下達一個命令,讓代理者去執行。

        最後就是代理殺手【孫悟空】來執行下命令的人的方法,執行結束之後通知命名的執行情況,在這裏也就是【牛魔王被孫悟空剷除】。

適用場景 

        主要解決:在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向對象系統中,有些對象由於某些原因(比如對象創建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。

        優點: 1、職責清晰。 2、高擴展性。 3、智能化。

        缺點: 1、由於在客戶端和真實主題之間增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢。 2、實現代理模式需要額外的工作,有些代理模式的實現非常複雜。

        注意事項: 1、和適配器模式的區別:適配器模式主要改變所考慮對象的接口,而代理模式不能改變所代理類的接口。 2、和裝飾器模式的區別:裝飾器模式爲了增強功能,而代理模式是爲了加以控制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章