• 【编程思想】【设计模式】【结构模式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转载版
  • 相关阅读:
    C++头文件保护符和变量的声明定义
    ReactNavtive框架教程(2)
    扩展方法使用
    华为0基础——(练习用)挑7
    HTTP Status 500
    屏蔽DataGridView控件DataError 事件提示的异常信息
    POJ 3630 Phone List Trie题解
    【学习总结】数学-向量叉积
    9.1-9.30推荐文章汇总
    Autolayout环境设置任意个数相等间距排列的按钮的方法
  • 原文地址:https://www.cnblogs.com/demonzk/p/9035467.html
Copyright © 2020-2023  润新知