zoukankan      html  css  js  c++  java
  • 【编程思想】【设计模式】【结构模式Structural】代理模式Proxy

    Python版

    https://github.com/faif/python-patterns/blob/master/structural/proxy.py

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
    *TL;DR80
    Provides an interface to resource that is expensive to duplicate.
    """
    
    from __future__ import print_function
    import time
    
    
    class SalesManager:
        def talk(self):
            print("Sales Manager ready to talk")
    
    
    class Proxy:
        def __init__(self):
            self.busy = 'No'
            self.sales = None
    
        def talk(self):
            print("Proxy checking for Sales Manager availability")
            if self.busy == 'No':
                self.sales = SalesManager()
                time.sleep(0.1)
                self.sales.talk()
            else:
                time.sleep(0.1)
                print("Sales Manager is busy")
    
    
    class NoTalkProxy(Proxy):
        def talk(self):
            print("Proxy checking for Sales Manager availability")
            time.sleep(0.1)
            print("This Sales Manager will not talk to you",
                  "whether he/she is busy or not")
    
    
    if __name__ == '__main__':
        p = Proxy()
        p.talk()
        p.busy = 'Yes'
        p.talk()
        p = NoTalkProxy()
        p.talk()
        p.busy = 'Yes'
        p.talk()
    
    ### OUTPUT ###
    # Proxy checking for Sales Manager availability
    # Sales Manager ready to talk
    # Proxy checking for Sales Manager availability
    # Sales Manager is busy
    # Proxy checking for Sales Manager availability
    # This Sales Manager will not talk to you whether he/she is busy or not
    # Proxy checking for Sales Manager availability
    # This Sales Manager will not talk to you whether he/she is busy or not
    Python转载版
  • 相关阅读:
    docker 镜像管理
    docker 常用操作
    docker 简单介绍与安装
    emacs 缩进
    stl标准库 iterator_traits
    emacs semantic,speedbar,gdb汇总
    在emacs 里使用gdb
    emacs speedbar功能介绍
    前端基础之BOM和DOM
    modules模块
  • 原文地址:https://www.cnblogs.com/demonzk/p/9035467.html
Copyright © 2011-2022 走看看