23种设计模式Python版 11 代理模式

基本介绍

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。

  • 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。

  • 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。

特点:为其他对象提供一种代理以控制对这个对象的访问

代理模式属于结构型模式。

案例图示

买火车票不一定要去火车站买,也可以在网上买,省去了排队的环节:

image-20210624122107655

优缺点

优点:

  • 职责清晰
  • 高扩展性
  • 智能化

缺点:

  • 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢
  • 实现代理模式需要额外的工作,有些代理模式的实现非常复杂

代码实现

用Python实现代理模式:

class TrainStation:
    def buy_tickets(self):
        return "Train ticket"

    def line_up(self):
        print("Users are waiting in line ...")


class Proxy:
    def __init__(self):
        # 与火车站建立联系
        self.train_station = TrainStation()

    def buy_tickets(self):
        self.__request()
        return self.train_station.buy_tickets()

    def __request(self):
        print("I am launching a ticket request to the train station ...")


if __name__ == '__main__':
    get_tickets = Proxy()
    tickets = get_tickets.buy_tickets()
    print(tickets)

# I am launching a ticket request to the train station ...
# Train ticket
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值