22. Visitor Pattern 访问器模式

动机:在软件构建过程中,由于需求的变化,某些类层次结构(父类、子类)中添加新的行为。如果直接在基类中更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。如何在不更改原有类的情况下,透明地为类层次结构添加新行为。

定义:表示一个作用于某对象结构中的各元素的操作,使得可以在不改变各个元素的类的前提下扩展这些元素的新操作。

结构图:

总结:visitor模式通过双重分发,来实现在不更改element类层次结构的前提下,在运行时透明地为类层次结构上的各个类动态地添加新的操作。

在写代码是就要预想到,以后可能会添加新行为,但是添加哪些行为、添加几个行为是不知道的。要提前做好伏笔。

二次多态辨析:第一个为accept方法的多态辨析,第二个为visitElementX方法的多态辨析。

缺点: 元素的子类个数要确定,因为子类的个数对应着visitor每个子类的方法的个数,如果元素的子类要增加,那么所有visitor的子类的方法个数都要添加。之所以要添加,是因为每个visitor表示一种行为,而每个visitor中的方法对应着一个特定子类元素的行为。所以visitor中的方法参数就是元素子类。

visitor模式使用与Element类层次结构稳定,而操作需要面临频繁改动。

参考:https://www.bilibili.com/video/av24176315/?p=24

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值