大佬教程收集整理的这篇文章主要介绍了23种设计模式之访问者模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
定义: 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作
通俗的说,就是定义一个访问者角色,当对指定角色进行访问时要通过访问者进行访问
其类图如下:
title="23种设计模式之访问者模式" alt="23种设计模式之访问者模式" src="https://cn.js-code.com/res/2019/01-10/21/4db5c05671ff31c1ae5db6cbcf549de5.jpg" >
各角色说明:
抽象元素代码:
title="23种设计模式之访问者模式" alt="23种设计模式之访问者模式" src="https://cn.js-code.com/res/2019/01-10/21/b1379ba32d62b5ebd43c17bfa0c7a4f0.jpg" >
具体元素代码:
title="23种设计模式之访问者模式" alt="23种设计模式之访问者模式" src="https://cn.js-code.com/res/2019/01-10/21/aebd57b0868a6aea9a5c3357df378749.jpg" >
抽象访问者代码:
title="23种设计模式之访问者模式" alt="23种设计模式之访问者模式" src="https://cn.js-code.com/res/2019/01-10/21/3706a38d39eaeebb3a73ab1efd1639b1.jpg" >
具体访问者代码:
title="23种设计模式之访问者模式" alt="23种设计模式之访问者模式" src="https://cn.js-code.com/res/2019/01-10/21/74ee32e85ff5cd6563b6cf945c80b1a9.jpg" >
结构对象用来产生不同的元素对象,代码如下:
title="23种设计模式之访问者模式" alt="23种设计模式之访问者模式" src="https://cn.js-code.com/res/2019/01-10/21/7a04a581fc3fbdbbc65e4bf053907816.jpg" >
场景类代码:
title="23种设计模式之访问者模式" alt="23种设计模式之访问者模式" src="https://cn.js-code.com/res/2019/01-10/21/76f4550bba7f15e5ec9fa87c8ad2fb40.jpg" >
通过增加访问者,这要是具体元素就非常容易访问,对元素的遍历就更加容易了,甭管它是什么对象,只要它在一个容器中,都可以通过访问者来访问,任务集中化.
访问者模式的优点:
访问者模式的缺点:
访问者模式的应用场景:
1.统计功能
对不同的具体元素进行统计,针对不同的具体元素针对性统计
比如统计员工工资,经理和员工的工资情况不同,使用访问者进行分别计算,然后可以计算总额等
2.多个访问者
可以定义多个访问者,每个访问者实现不同的功能
在IVistor 下再定义 接口继承 IVistor,分别实现各自功能,使用时传递不同的访问者有不同的表现
访问者模式是一种集中规整模式,特别使用于大规模重构的项目,在这一个阶段需求已经非常清晰,原系统的功能点也已经明确,通过访问者模式可以很容易把一些功能进行梳理,达到最终目的--功能集中化,如一个统一的报表运算、UI展现等,我们还可以与其它模式混编建立一套自己的过滤器或者拦截器
以上是大佬教程为你收集整理的23种设计模式之访问者模式全部内容,希望文章能够帮你解决23种设计模式之访问者模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。