【软构】strategy模式和visitor模式的简述以及区分

本文探讨了Strategy和Visitor设计模式的共性和差异。这两种模式都基于委派思想,用于ADT的扩展以遵循OCP原则。Strategy模式关注于算法的灵活替换,而Visitor模式则侧重于为ADT添加新操作。它们分别代表了功能微调和功能增加两种不同的开放策略。
摘要由CSDN通过智能技术生成

目录

1.设计样式

2.对具体的设计模式进行简述

3.两者的对比


1.设计样式

strategy模式和visitor模式拥有共同的设计样式(使用委派的思路):

 两者的设计思路都是因为未来对现有的ADT可能有不同的设计需求,为了满足OCP原则,通过委派的方式为现有的ADT留下扩展的空间。

2.对具体的设计模式进行简述

下面对这两者设计模式进行

Strategy模式:

这里给出的是对于支付问题,针对用什么支付给出多个策略,交给客户端调用。

Visitor设计模式:

 这里描述的是通过在ItemElement中预留accept方法去接受visitor以实现对该ADT功能的扩展。

3.两者的对比

我们可以看到visitor和strategy有着相同的共性样式,同时都是对于ADT的扩展,在代码的表现上似乎区别也不是很大,但二者的应用逻辑有很大的区别。

从目的上看,Visitor是用于对ADT本身方法的扩展,Strategy是为了实现对ADT内部实现的算法的灵活替换。

从出发角度来看,Visitor设计模式是站在外部client的角度,去增加对于ADT的不同操作。strategy设计模式是站在内部ADT的角度,变化对其内部功能的不同配置。

从与ADT的关系来看,Visitor与ADT本身关系不大,类似将ADT作为参数在一个外部进行使用,Strategy方法则是ADT的重要组成部分,是在ADT方法的内部进行运行。

形象上来说:将ADT比作一个人的话,strategy设计模式就好比这个人已经会武功,使用不同的strategy就好比给这个人不同的武器去进行使用;Visitor设计模式就好比让这个人多学会了东西,比如给他增加了读书的功能这样。一个是对功能微调的开放,一个是功能增加的开放。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值