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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章