最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python筆記之代理模式

 更新時(shí)間:2019年11月20日 08:56:43   作者:谷雨yun  
這篇文章主要為大家詳細(xì)介紹了Python筆記之代理模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

代理通常就是一個(gè)介于尋求方和提供方之間的中介系統(tǒng)。其核心思想就是客戶端(尋求方)沒有直接和提供方(真實(shí)對(duì)象)打交道,而是通過代理對(duì)象來完成提供方提供的資源或操作。

代理其實(shí)就是封裝實(shí)際服務(wù)對(duì)象的包裝器或代理人。代理可以為其包裝的對(duì)象提供附加功能,而無需改變此對(duì)象的代碼。代理模式的主要目的是為其他對(duì)象提供一個(gè)代理者或占位符,從而控制對(duì)實(shí)際對(duì)象的訪問。

三種常見的不同類型或不同應(yīng)用場(chǎng)景下的代理:

  • 虛擬代理:如果一個(gè)對(duì)象實(shí)例化后會(huì)占用大量的內(nèi)存,可以先利用占位符表示,只有當(dāng)客戶端請(qǐng)求或訪問這個(gè)對(duì)象時(shí)才會(huì)創(chuàng)建實(shí)際的對(duì)象。
  • 遠(yuǎn)程代理:給位于遠(yuǎn)程服務(wù)器或不同地址空間上的實(shí)際對(duì)象提供了本地表示。例如應(yīng)用程序可能需要獲取不同服務(wù)器或空間地址上的對(duì)象信息,這時(shí)候就可以通過一個(gè)本地的代理來獲取相關(guān)信息,而不需要直接去和各個(gè)服務(wù)器或空間地址上的對(duì)象“打交道”。
  • 保護(hù)代理:通過代理來訪問真正的對(duì)象,訪問時(shí),代理則檢查和控制來自客戶端的請(qǐng)求權(quán)限、認(rèn)證、授權(quán)等,從而保護(hù)了真正的實(shí)際對(duì)象。

代理模式注意點(diǎn):

  • 客戶端實(shí)際上可以直接訪問真實(shí)對(duì)象以得到自己想要的結(jié)果,但是使用代理也會(huì)有許多優(yōu)勢(shì),就如同它的名字“代理”,是可以進(jìn)行代理的,但是具體的使用還是需要根據(jù)具體情況而定。
  • 代理是可以根據(jù)需要在代理的接口中添加額外的操作的,但需要注意的是這些額外的操作不要變成了“累贅”。
  • 由于代理相當(dāng)于是給真實(shí)對(duì)象進(jìn)行了一層封裝,所以可能會(huì)增加一定的耗時(shí)。

簡(jiǎn)單示例:

from abc import ABCMeta, abstractmethod


class HouseOwner(metaclass=ABCMeta):
  """房主抽象類:都可以將房子出租"""
  @abstractmethod
  def rent_house(self, rental):
    pass


class Landlord(HouseOwner):
  """真實(shí)對(duì)象:房主"""
  def __init__(self):
    self.account = 0
    self.house_key = 'house key'

  def rent_house(self, rental):
    """收取租金,并房屋鑰匙給出租的人"""
    self.account += rental
    return self.house_key


class HouseAgent:
  """代理類:中介,代理房東出租他們的房子"""
  def __init__(self):
    self.account = 0
    self.house_resource = []
    # 房源肯定不只一個(gè),這里就只簡(jiǎn)單放一個(gè)了
    self.house_resource.append(Landlord())

  # 通常而言,代理類和表示真實(shí)對(duì)象的類具有相同的接口
  # 表示此方法給真實(shí)對(duì)象某個(gè)操作進(jìn)行的代理操作
  def rent_house(self, rental, agency_fee):
    """收取租金和中介費(fèi),并將房子出租給客戶"""
    self.account += agency_fee
    house_key = self.house_resource[0].rent_house(rental)
    return house_key


class Renter:
  """客戶端類:租戶"""
  def __init__(self):
    self.account = 10000
    self.house_key = None
    self.house_agent = HouseAgent()

  def find_house(self):
    """在某一個(gè)中介(代理對(duì)象)處出租房子"""
    self.house_key = self.house_agent.rent_house(3000, 1000)
    print("You've rented a house!")


if __name__ == '__main__':
  renter = Renter()
  renter.find_house()

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)簡(jiǎn)單的獲取圖片爬蟲功能示例

    Python實(shí)現(xiàn)簡(jiǎn)單的獲取圖片爬蟲功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的獲取圖片爬蟲功能,涉及Python使用urllib模塊及正則模塊操作頁面元素獲取圖片的相關(guān)技巧,需要的朋友可以參考下
    2017-07-07
  • Python?解析獲取?URL?參數(shù)及使用步驟

    Python?解析獲取?URL?參數(shù)及使用步驟

    這篇文章主要介紹了Python?解析獲取?URL?參數(shù)及使用,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 對(duì)DJango視圖(views)和模版(templates)的使用詳解

    對(duì)DJango視圖(views)和模版(templates)的使用詳解

    今天小編就為大家分享一篇對(duì)DJango視圖(views)和模版(templates)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作

    python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作

    這篇文章主要介紹了python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python中不可變數(shù)據(jù)類型原理與實(shí)戰(zhàn)全解析

    Python中不可變數(shù)據(jù)類型原理與實(shí)戰(zhàn)全解析

    在Python的世界里,數(shù)據(jù)對(duì)象被明確劃分為兩大陣營(yíng):可變(Mutable)與不可變(Immutable),而本文將為大家詳細(xì)介紹一下其中的不可變數(shù)據(jù),感興趣的可以了解下
    2025-04-04
  • Python+SymPy實(shí)現(xiàn)秒解微積分詳解

    Python+SymPy實(shí)現(xiàn)秒解微積分詳解

    SymPy是一個(gè)Python庫,專注于符號(hào)數(shù)學(xué),它的目標(biāo)是成為一個(gè)全功能的計(jì)算機(jī)代數(shù)系統(tǒng),同時(shí)保持代碼簡(jiǎn)潔、易于理解和擴(kuò)展。本文將利用SymPy實(shí)現(xiàn)四行代碼秒解微積分,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • python自動(dòng)提取文本中的時(shí)間(包含中文日期)

    python自動(dòng)提取文本中的時(shí)間(包含中文日期)

    這篇文章主要介紹了python自動(dòng)提取文本中的時(shí)間(包含中文日期),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python利用cnocr庫實(shí)現(xiàn)pdf文件的文字識(shí)別

    Python利用cnocr庫實(shí)現(xiàn)pdf文件的文字識(shí)別

    很多pdf文件文字識(shí)別軟件都會(huì)收費(fèi),免費(fèi)的網(wǎng)頁版可能會(huì)帶來信息泄露,所以本文為大家介紹了如何利用Python中的cnocr庫完成中文掃描pdf文件的文字識(shí)別,需要的可以參考下
    2024-12-12
  • Python字符串的一些操作方法總結(jié)

    Python字符串的一些操作方法總結(jié)

    在本文里小編給大家整理了關(guān)于Python字符串的一些操作方法和相關(guān)要點(diǎn)總結(jié),有需要的朋友們可以學(xué)習(xí)下。
    2019-06-06
  • python?matplotlib保存圖片太慢如何解決

    python?matplotlib保存圖片太慢如何解決

    這篇文章主要介紹了python?matplotlib保存圖片太慢問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評(píng)論

宁城县| 宁化县| 高台县| 崇信县| 安义县| 合水县| 崇文区| 苍溪县| 花莲市| 花垣县| 勃利县| 彝良县| 固安县| 建阳市| 泌阳县| 大英县| 德钦县| 鄂伦春自治旗| 抚松县| 金堂县| 巩留县| 资讯 | 桐柏县| 龙口市| 成武县| 安阳市| 建宁县| 大安市| 千阳县| 汶川县| 沭阳县| 台南县| 武定县| 建瓯市| 江华| 安顺市| 广州市| 运城市| 昔阳县| 封丘县| 仁布县|