设计模式之代理模式

# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
"""
@author: 涛

这是代理模式的一个应用场景。(参考了《设计模式之禅》)

·代理模式的主要作用是在委托类的方法被执行的前后做预处理或善后处理。比如此场景中玩家
委托游戏代练帮他升级,每升一级玩家要付钱给代练者。
·这样做可以让产品设计更符合逻辑,我想架构师的任务之一就是设计一个符合人类思考逻辑的
系统框架吧?
"""
class IGamePlayer(object):
    def login(user, password):
        pass
    
    def killBoss():
        pass
    
    def upLevel():
        pass
    
class Player(IGamePlayer):
    def __init__(self, name):
        self.name = name
    
    def login(self, user, password):
        print '%s 登录' % self.name
        
    def killBoss(self):
        print '%s 在打怪' % self.name
        
    def upLevel(self):
        print '%s 升级了' % self.name

class Proxy(IGamePlayer):
    def __init__(self, player):
        self.player = player
        
    def login(self, user, password):
        self.player.login(user, password)
        
    def killBoss(self):
        self.player.killBoss()
        
    def upLevel(self):
        self.player.upLevel()
        print '可以向委托人收钱了'
        
if __name__ == '__main__':
    p1 = Player('涛')
    pro = Proxy(p1)
    pro.login('aa', '1123581321')
    pro.killBoss()
    pro.upLevel()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值