设计模式(python实现)--代理模式(Proxy)

2020-01-29  本文已影响0人  远行_2a22

Proxy

动机(Motivation)

模式定义

为其他对象提供一种代理以控制(隔离,使用接口)对这对象的访问。
——《设计模式》GoF

要点总结

应用案例

常见的代理类型如下所示。

例子

通过代理SensitiveInfoProxy来访问信息SensitiveInfo,在添加新用户时只有密码正确,才能进行操作 。

# -*- coding:utf-8 -*-


class SensitiveInfo(object):
    def __init__(self):
        self.user = ['nick', 'tom', 'ben', 'mike']

    def get_user(self):
        print('There are {} user: {}'.format(len(self.user), '; '.join(self.user)))

    def add_user(self, user):
        self.user.append(user)
        print('Added user {}'.format(user))


class SensitiveInfoProxy(object):
    def __init__(self):
        self.sensitive_info_obj = SensitiveInfo()
        self.secret = '123456'

    def get_user(self):
        self.sensitive_info_obj.get_user()

    def add_user(self, user):
        sec = input('what is the secret(str type)?')
        if type(sec) != str:
            print('secret should be str type')
        if sec == self.secret:
            self.sensitive_info_obj.add_user(user)
        else:
            print('secret is wrong!')


if __name__ == '__main__':
    sensitive_info_proxy = SensitiveInfoProxy()
    while True:
        print('1: get user list. 2: add user. 3:exit')
        key = input('choose option: ')
        if key == 1:
            sensitive_info_proxy.get_user()
        elif key == 2:
            name = input('choose username: ')
            sensitive_info_proxy.add_user(name)
        elif key == 3:
            exit()
        else:
            print('wrong option')
上一篇 下一篇

猜你喜欢

热点阅读