zoukankan      html  css  js  c++  java
  • 大话设计模式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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    VIM中去除Windows文本中的^M符号,多种方法
    LAMP=LINUX+Apache+MySQL+PHP
    个人常用的VIM命令列表
    vim与windows/linux之间的复制粘贴小结
    eclipse中安装vim插件
    关闭VIM/VI自动备份
    linux一些个非官方网站
    程序员的编辑器
    linux和windows双系统互拷文件乱码问题
    Linux ubuntu lamp安装配置环境phpmyadmin
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python_proxy_pattern.html
Copyright © 2011-2022 走看看