国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python設計模式之代理模式實例

2020-02-23 05:20:38
字體:
來源:轉載
供稿:網(wǎng)友

翻墻常用的方式就是使用代理(Proxy),其基本過程如下:

瀏覽器<-->代理服務器<-->服務器

如果瀏覽器請求不到服務器,或者服務器無法響應瀏覽器,我們可以設定將瀏覽器的請求傳遞給代理服務器,代理服務器將請求轉發(fā)給服務器。然后,代理服務器將服務器的響應內(nèi)容傳遞給瀏覽器。當然,代理服務器在得到請求或者響應內(nèi)容的時候,本身也可以做些處理,例如緩存靜態(tài)內(nèi)容以加速,或者說提取請求內(nèi)容或者響應內(nèi)容做些正當或者不正當?shù)姆治?。這種翻墻方式,就是設計模式中代理模式(Proxy Pattern)的一個具體例子。

維基百科對代理模式做了以下解釋:
代碼如下:
In computer programming, the proxy pattern is a software design pattern. A proxy, in its most general form, is a class functioning as an interface to something else. The proxy could interface to anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to duplicate.

基于面向過程實現(xiàn)的代理模式

下面是一段體現(xiàn)該設計模式中心的面向過程的python代碼:
代碼如下:
def hello():
    print 'hi, i am hello'

def proxy():
    print 'prepare....'
    hello()
    print 'finish....'

if __name__ == '__main__':
    proxy()
運行結果:
代碼如下:
prepare....
hi, i am hello
finish....
有沒有想到裝飾器?


基于面向對象實現(xiàn)的代理模式

代碼如下:
class AbstractSubject(object):

    def __init__(self):
        pass

    def request(self):
        pass

class RealSubject(AbstractSubject):

    def __init__(self):
        pass
    def request(self):
        print 'hi, i am RealSubject'

class ProxySubject(AbstractSubject):

    def __init__(self):
        self.__rs = RealSubject()

    def request(self):
        self.__beforeRequest()
        self.__rs.request()
        self.__afterRequest()

    def __beforeRequest(self):
        print 'prepare....'

    def __afterRequest(self):
        print 'finish....'

if __name__ == '__main__':
    subject = ProxySubject()
    subject.request()

如果RealSubject的初始化函數(shù)init有參數(shù),代理類ProxySubject可以作兩種方式的修改: 第一種: ProxySubject的init方法同樣也有參數(shù),初始化代理類的時候將初始化參數(shù)傳遞給RealSubject。 第二種: 將ProxySubject的init方法改為:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 奉贤区| 通化县| 米泉市| 乐清市| 葫芦岛市| 新龙县| 五大连池市| 枞阳县| 铁力市| 保靖县| 垣曲县| 余干县| 崇仁县| 台湾省| 东宁县| 全椒县| 四子王旗| 赣榆县| 西林县| 镶黄旗| 富阳市| 云南省| 虹口区| 达日县| 南京市| 昆明市| 若尔盖县| 松原市| 景谷| 木兰县| 卓资县| 绥宁县| 惠安县| 罗江县| 太康县| 手机| 修武县| 霍州市| 高邑县| 洛阳市| 耒阳市|