Python 设计模式—访问者模式

本文介绍了Python中的访问者模式,该模式用于在不改变数据结构的情况下定义作用于元素的新操作。适用场景包括遍历不同对象执行特定操作、多个对象依次处理同一对象。文章提供了Python代码示例,并讨论了模式的优点,如职责分离和易于扩展。同时,文中提及了相关的Python编程学习资源。
摘要由CSDN通过智能技术生成

今日分享主题:Python 设计模式之访问者模式。

定义

访问者模式是指封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义于作用于这些元素的新操作。

 

应用场景

1、要遍历不同的对象,根据对象进行不同的操作的场景;
2、当一个对象被多个不同对象顺次处理的情况,可以考虑使用访问者模式;
3、报表生成器也可以使用访问者模式实现,报表的数据源由多个不同的对象提供,每个对象都是Visitor,报表这个Element顺次Accept各访问者完善并生成对象。

 

Python 代码实现

 1class Person(object):
 2    pass
 3
 4class Man(Person):
 5    pass
 6
 7class Woman(Person):
 8    pass
 9
10class Girl(Woman,Man):
11    pass
12
13class Son(Man, Woman):
14    pass
15
16class Visitor(object):
17    def visit(self, person, *args, **kwargs):
18        meth = None
19        #为了方便且快速地看清继承关系和顺序,可以用__mro__方法来获取这个类的调用顺序。
20        for cls in person.__class__.__mro__:
21            # print(cls)
22            meth_name = 'visit_'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wu_Candy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值