欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第6篇---Python设计模式之代理模式+含代码实现+学习python的赶快进

程序员文章站 2022-04-30 08:21:46
...

代理模式概念:

      为其他对象提供一种代理以控制对这个对象的访问。。 晦涩难懂的官方术语。。。简单来说,就是A和B想通话,必须通过C中间牵线,此时的A和B就都只给C说,C转换给对方。。

案例一:

      我们实现一个简单的保护代理来查看和添加用户。。也就是说,有一个敏感信息类,里面可以读用户信息,也可以添加用户信息。。一般人不能之间访问,若想访问必须通过代理类。 。代理这里做简要的验证,当前用户的访问权限。。。

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

    def read(self):       # 无需验证
        print('There are {} users: {}'.format(len(self.users), ' '.join(self.users)))

    def add(self, user):     # 需要验证
        self.users.append(user)
        print('Added user {}'.format(user))

class Info:
    '''SensitiveInfo的保护代理'''
    def __init__(self):
        self.protected = SensitiveInfo()
        self.secret = '123456'
    def read(self):
        self.protected.read()

    def add(self, user):
        sec = input("请输入你的密码:")
        self.protected.add(user) if sec == self.secret else print("That's wrong!")

if __name__ == '__main__':
    info = Info()

    while True:
        print('1: 读取用户, 2:添加用户, 3:终止')
        key = input('choose option:')
        if key == '1':
            info.read()
        elif key == '2':
            name = input("添加的用户名:")
            info.add(name)
        elif key == '3':
            exit()
        else:
            print('乱输入个锤子')

         本例中,添加用户时,需要在代理这里输入密码进行验证,然后才可以添加, 而读取用户时,无需验证。。