代理模式(python)

來源:互聯網
上載者:User

代理模式(Proxy):為某個對象提供一種代理以控制對這個對象的訪問。
注意:代理模式和策略模式的類圖很相近,實現方法也是一樣的,但是應用情境很不一樣,體現了不同的思想。
    策略模式中同一外部對象訪問內容物件的操作一樣,但是裡面的策略對象不同。
    代理模式中不同的外部對象訪問代理對象的操作一樣,但是裡面的真實對象是一樣的。
    
代理模式在訪問對象時引入一定程度的間接性,因為這種間接性,可以附加多種用途
應用情境
1、遠程代理。為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實。
2、虛擬代理。當要建立耗時很長的對象時,可以使用虛擬代理。虛擬代理完成的工作為建立真實對象,並在建立的過程中給出提示。比如在網頁載入圖片的過程中,虛擬代理可以用一個圖片框暫時替代真實的圖片。
3、安全代理。用於控制真實對象訪問是的許可權。

4、智能指引。當調用真實的對象時,代理處理另外一些事情,比如計算真實對象的引用次數、是否鎖定等等。

#encoding=utf-8##by panda#代理模式def printInfo(info):    print unicode(info, 'utf-8').encode('gbk')class SchoolGirl():    Name = ''    def __init__(self, name):        self.Name = name    class GiveGift():    """介面類:定義通用操作"""    def GiveDolls(self):        return        def GiveFlowers(self):        return        def GiveChocolate(self):        return    class Pursuit(GiveGift):    mm = None    def __init__(self, mm):        self.mm = mm;        return;        def GiveDolls(self):          printInfo("代理模式:")        printInfo("送 %s 洋娃娃" % self.mm.Name)              return        def GiveFlowers(self):        printInfo("代理模式:")        printInfo("送 %s 鮮花" % self.mm.Name)              return        def GiveChocolate(self):        printInfo("代理模式:")        printInfo("送 %s 巧克力" % self.mm.Name)                return    class Proxy(GiveGift):    gg = None    def __init__(self, mm):        self.gg = Pursuit(mm);        return;        def GiveDolls(self):          self.gg.GiveDolls()        return        def GiveFlowers(self):        self.gg.GiveFlowers()        return        def GiveChocolate(self):        self.gg.GiveChocolate()        return        def clientUI():    mm = SchoolGirl(r"韓梅梅")    proxy = Proxy(mm)    proxy.GiveDolls()    proxy.GiveFlowers()    proxy.GiveChocolate()    returnif __name__ == '__main__':    clientUI();

類圖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.