• 大话设计模式Python实现-代理模式


    代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 __author__ = 'Andy'
     5 
     6 """
     7 大话设计模式
     8 设计模式——代理模式
     9 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问
    10 实现:戴励 替 卓贾易 送礼物给 娇娇
    11 模型:
    12 #公共接口类
    13 class InterFace:
    14     def request(self):
    15         pass
    16 #真实类
    17 class RealSubject(InterFace):
    18     def request(self):
    19         print 'RealSubject request'
    20 #代理类 调用真实类的内部方法
    21 class ProxySubject(InterFace)
    22     def request(self):
    23         self.real = RealSubject()
    24         self.real.request()
    25 """
    26 
    27 
    28 # 送礼物接口
    29 class GiveGift(object):
    30     # 送洋娃娃
    31     def GiveDolls(self):
    32         pass
    33 
    34     # 送花
    35     def GiveFlowers(self):
    36         pass
    37 
    38     # 送巧克力
    39     def GiveChocolate(self):
    40         pass
    41 
    42 
    43 # 被追求者类
    44 class SchoolGirl(object):
    45     def __init__(self, name):
    46         self.name = name
    47 
    48 
    49 # 追求者类
    50 class Pursuit(GiveGift):
    51     def __init__(self, Girl):
    52         self.Girl = Girl
    53 
    54     def GiveDolls(self):
    55         print self.Girl.name, '送你洋娃娃'
    56 
    57     def GiveFlowers(self):
    58         print self.Girl.name, '送你花'
    59 
    60     def GiveChocolate(self):
    61         print self.Girl.name, '送你巧克力'
    62 
    63 
    64 # 代理类
    65 class Proxy(GiveGift):
    66     def __init__(self, Girl):
    67         self.proxy = Pursuit(Girl)
    68 
    69     # 送洋娃娃
    70     def GiveDolls(self):
    71         self.proxy.GiveDolls()
    72 
    73     # 送花
    74     def GiveFlowers(self):
    75         self.proxy.GiveFlowers()
    76 
    77     # 送巧克力
    78     def GiveChocolate(self):
    79         self.proxy.GiveChocolate()
    80 
    81 
    82 if __name__ == '__main__':
    83     jiaojiao = SchoolGirl('jiaojiao')
    84     daili = Proxy(jiaojiao)
    85     daili.GiveDolls()
    86     daili.GiveFlowers()
    87     daili.GiveChocolate()

    上面的类的设计如下图: 

    代理类Proxy引用代理的实体Pursite,提供与Pursite相同的接口来代替实体


    作者:Andy
    出处:http://www.cnblogs.com/onepiece-andy/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Shell使用
    从一道面试题谈linux下fork的运行机制
    老了,问题定位难了,xml编码解析
    javacc
    C++概述
    Notepad++中设置Windows、Unix、Mac三种行尾换行符格式间的转换
    玩转html5(一)-----盘点html5新增的那些酷酷的input类型和属性
    Java Drp项目实战—— 环境搭建
    cocos2d-x游戏开发 跑酷(八) 对象管理 碰撞检測
    电话拨号盘(带触摸振动反馈)
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python_proxy_pattern.html
Copyright © 2020-2023  润新知