Python設(shè)計(jì)模式之代理模式實(shí)例詳解
本文實(shí)例講述了Python設(shè)計(jì)模式之代理模式。分享給大家供大家參考,具體如下:
代理模式(Proxy Pattern):為其他對象提供一種代理以控制對這個(gè)對象的訪問
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設(shè)計(jì)模式
設(shè)計(jì)模式——代理模式
代理模式(Proxy Pattern):為其他對象提供一種代理以控制對這個(gè)對象的訪問
實(shí)現(xiàn):戴勵(lì) 替 卓賈易 送禮物給 嬌嬌
模型:
#公共接口類
class InterFace:
def request(self):
pass
#真實(shí)類
class RealSubject(InterFace):
def request(self):
print 'RealSubject request'
#代理類 調(diào)用真實(shí)類的內(nèi)部方法
class ProxySubject(InterFace)
def request(self):
self.real = RealSubject()
self.real.request()
"""
# 送禮物接口
class GiveGift(object):
# 送洋娃娃
def GiveDolls(self):
pass
# 送花
def GiveFlowers(self):
pass
# 送巧克力
def GiveChocolate(self):
pass
# 被追求者類
class SchoolGirl(object):
def __init__(self, name):
self.name = name
# 追求者類
class Pursuit(GiveGift):
def __init__(self, Girl):
self.Girl = Girl
def GiveDolls(self):
print self.Girl.name, '送你洋娃娃'
def GiveFlowers(self):
print self.Girl.name, '送你花'
def GiveChocolate(self):
print self.Girl.name, '送你巧克力'
# 代理類
class Proxy(GiveGift):
def __init__(self, Girl):
self.proxy = Pursuit(Girl)
# 送洋娃娃
def GiveDolls(self):
self.proxy.GiveDolls()
# 送花
def GiveFlowers(self):
self.proxy.GiveFlowers()
# 送巧克力
def GiveChocolate(self):
self.proxy.GiveChocolate()
if __name__ == '__main__':
jiaojiao = SchoolGirl('jiaojiao')
daili = Proxy(jiaojiao)
daili.GiveDolls()
daili.GiveFlowers()
daili.GiveChocolate()
運(yùn)行結(jié)果:
jiaojiao 送你洋娃娃
jiaojiao 送你花
jiaojiao 送你巧克力
上面的類的設(shè)計(jì)如下圖:

代理類Proxy引用代理的實(shí)體Pursite,提供與Pursite相同的接口來代替實(shí)體
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
在Tensorflow中實(shí)現(xiàn)梯度下降法更新參數(shù)值
今天小編就為大家分享一篇在Tensorflow中實(shí)現(xiàn)梯度下降法更新參數(shù)值,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試
這篇文章主要介紹了基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試,在我們寫程序的時(shí)候,很容易遇到各種各樣的bug,然后編譯器提示程序出錯(cuò)的地方。很多時(shí)候可以通過提示的信息修改程序,但是有時(shí)我們想得到更多的信息,這個(gè)時(shí)候就需要進(jìn)行斷點(diǎn)調(diào)試,下面我們就一起來學(xué)習(xí)ycharm斷點(diǎn)調(diào)試2022-02-02
關(guān)于Numpy生成數(shù)總結(jié)(隨機(jī)整數(shù)randint,固定步長arange,分布)
這篇文章主要介紹了關(guān)于Numpy生成數(shù)總結(jié)(隨機(jī)整數(shù)randint,固定步長arange,分布),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
python實(shí)現(xiàn)的多任務(wù)版udp聊天器功能案例
這篇文章主要介紹了python實(shí)現(xiàn)的多任務(wù)版udp聊天器功能,結(jié)合具體案例形式分析了Python基于udp的聊天器功能相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2019-11-11

