Python设计模式——代理模式

若想用一个对象来代表另一个对象,则可使用”代理模式”。

一般来说代理模式可以用于以下场合:
1. 远程代理,用本地对象来代表远程对象。RPyC程序库就是个很好的例子,它可以在服务器端创建对象,并在一台或多台客户端中创建针对这些对象的代理
2. 虚拟代理,用来创建能够代表复杂对象的轻量级对象,只有确有必要时才会真正去创建那些复杂对象。
3. 安全代理,可根据客户端的访问权限来确定不同的访问级别。
4. 智能引用,可用来在”访问对象时执行额外操作”。

现在让我们考虑这么一个情景,验证用户是否有足够的访问权限

#!/usr/bin/env python
# encoding:utf-8

class User(object):
    def __init__(self, name, authority):
        self.name = name
        self.authority = authority


class UserProxy(object):
    def __init__(self, user):
        self.user = user

    def verify(self):
        if self.user.authority == 1:
            print self.user.name, '可访问'
        else:
            print self.user.name, '不可访问'

def main():
    user1 = UserProxy(User('xxx', 1))
    user2 = UserProxy(User('yyy', 0))
    user1.verify()
    user2.verify()

if __name__ == '__main__':
    main()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章