Python學習之代理模式

little bottle
發布: 2019-04-28 11:22:28
轉載
2571 人瀏覽過

本篇文章主要介紹Python實現代理模式,用了一個有趣的例子寫了一個示範代碼,具有一定參考價值,有興趣的朋友可以了解一下,希望對您有幫助。

代理模式的定義:為其他物件提供一種代理以控制對這個物件的存取。在某些情況下,一個對像不適合或不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。

代理模式的應用場景:

1.遠端代理,也就是為一個物件在不同的位址空間提供局部代表。這樣可以隱藏一個物件存在於不同位址空間的事實。

2.虛擬代理,是根據需要建立開銷大的物件。透過它來存放實例化需要很長時間的真是對象,例如html中,圖片需要load很久,所以透過虛擬代理來取代真實的圖片

3.安全代理,用來控制真實物件存取時的權限

4.智慧指引,是指當調用真實的對象時,代理處理另外一些事

舉個栗子:男A喜歡女A,但是不敢向其表白,所以委託男B為代理,代他送禮物給女A,實現這個需求的重點是,男A和女A是不互相直接接觸的,都是透過代理男B,實現間接接觸。

#encoding=utf-8 __author__ = 'kevinlu1010@qq.com' from abc import ABCMeta, abstractmethod class FemaleA(): def __init__(self, name): self.name = name class Male(): __metaclass__ = ABCMeta @abstractmethod def send_flower(self): pass @abstractmethod def send_chocolate(self): pass @abstractmethod def send_book(self): pass class MaleA(Male): def __init__(self, name, love_female): self.name = name self.love_female = FemaleA(love_female) def send_flower(self): print '%s送花给%s' % (self.name, self.love_female.name) def send_chocolate(self): print '%s送巧克力给%s' % (self.name, self.love_female.name) def send_book(self): print '%s送书给%s' % (self.name, self.love_female.name) class Proxy(Male): def __init__(self, name, proxyed_name, love_female): self.name = name self.proxyed = MaleA(proxyed_name, love_female) def send_flower(self): self.proxyed.send_flower() def send_chocolate(self): self.proxyed.send_chocolate() def send_book(self): self.proxyed.send_book() if __name__ == '__main__': p = Proxy('男B', '男A', '女A') p.send_book() p.send_chocolate() p.send_flower()
登入後複製

相關教學:Python影片教學

以上是Python學習之代理模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!