欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python筆記之代理模式

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

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

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

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

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

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

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

簡單示例:

from abc import ABCMeta, abstractmethod


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


class Landlord(HouseOwner):
  """真實(shí)對象:房主"""
  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 = []
    # 房源肯定不只一個,這里就只簡單放一個了
    self.house_resource.append(Landlord())

  # 通常而言,代理類和表示真實(shí)對象的類具有相同的接口
  # 表示此方法給真實(shí)對象某個操作進(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):
    """在某一個中介(代理對象)處出租房子"""
    self.house_key = self.house_agent.rent_house(3000, 1000)
    print("You've rented a house!")


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

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

相關(guān)文章

  • Python使用sqlalchemy實(shí)現(xiàn)連接數(shù)據(jù)庫的幫助類

    Python使用sqlalchemy實(shí)現(xiàn)連接數(shù)據(jù)庫的幫助類

    這篇文章主要為大家詳細(xì)介紹了Python如何使用sqlalchemy實(shí)現(xiàn)連接數(shù)據(jù)庫的幫助類,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考下
    2024-02-02
  • pyhton學(xué)習(xí)與數(shù)據(jù)挖掘self原理及應(yīng)用分析

    pyhton學(xué)習(xí)與數(shù)據(jù)挖掘self原理及應(yīng)用分析

    這篇文章主要為大家介紹了深入分析pyhton中的self原理及應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • python分析實(shí)現(xiàn)微信釘釘?shù)溶浖嚅_分身

    python分析實(shí)現(xiàn)微信釘釘?shù)溶浖嚅_分身

    我發(fā)現(xiàn)壇友分享的很多都是通過cmd?去start?多個微信,雖然能實(shí)現(xiàn)多開,但不夠靈活,比如我上午登錄了一個微信,下午在登錄就不太好用了,當(dāng)然也可能是我start的姿勢不對。于是我就搜了下單實(shí)例原理,自己動手實(shí)現(xiàn)了個隨用隨開的
    2022-02-02
  • Python正則表達(dá)式re.search()用法詳解

    Python正則表達(dá)式re.search()用法詳解

    re是Python中最常見的正則表達(dá)式模塊,常用方法包括compile,match,findall,finditer,search,split,sub等,下面這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式re.search()用法詳解的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 從零開始學(xué)Python第八周:詳解網(wǎng)絡(luò)編程基礎(chǔ)(socket)

    從零開始學(xué)Python第八周:詳解網(wǎng)絡(luò)編程基礎(chǔ)(socket)

    本篇文章主要介紹了從零開始學(xué)Python第八周:詳解網(wǎng)絡(luò)編程基礎(chǔ)(socket) ,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • Python中NumPy的數(shù)組拆分

    Python中NumPy的數(shù)組拆分

    這篇文章主要介紹了Python中NumPy的數(shù)組拆分,我們使用array_split()分割數(shù)組,將要分割的數(shù)組和分割數(shù)傳遞給它,如果將一個數(shù)組拆分為 3 個數(shù)組,則可以像使用任何數(shù)組元素一樣從結(jié)果中訪問它們,需要的朋友可以參考下
    2023-07-07
  • Python中Get()函數(shù)用法舉例介紹

    Python中Get()函數(shù)用法舉例介紹

    這篇文章主要給大家介紹了關(guān)于Python中Get()函數(shù)用法的相關(guān)資料,Python get()函數(shù)是一個非常重要的函數(shù),它可以幫助我們從字典中獲取對應(yīng)鍵的值,避免了因?yàn)殒I不存在而發(fā)生錯誤的情況,需要的朋友可以參考下
    2023-10-10
  • python excel轉(zhuǎn)換csv代碼實(shí)例

    python excel轉(zhuǎn)換csv代碼實(shí)例

    這篇文章主要介紹了python excel轉(zhuǎn)換csv代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python編寫微信遠(yuǎn)程控制電腦的程序

    python編寫微信遠(yuǎn)程控制電腦的程序

    這篇文章主要介紹了python編寫微信遠(yuǎn)程控制電腦的程序,使用python編寫的基于郵件收發(fā)的遠(yuǎn)程控制電腦的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python中視頻音頻的剪輯與處理實(shí)現(xiàn)

    python中視頻音頻的剪輯與處理實(shí)現(xiàn)

    Python中輕松實(shí)現(xiàn)各種視頻處理操作,包括剪輯、合并、添加音頻、文本、特效等多種功能,主要介紹了python中視頻音頻的剪輯與處理實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06

最新評論