访问者模式问题之在软件工程中,根据特性和场景决定是采用面向对象的抽象还是访问者的抽象,如何实现

简介: 访问者模式问题之在软件工程中,根据特性和场景决定是采用面向对象的抽象还是访问者的抽象,如何实现

问题一:访问者模式(Visitor)的命名和它的实现方式之间有何关系?


访问者模式(Visitor)的命名和它的实现方式之间有何关系?


参考回答:

虽然“Visitor”这个名字看起来像是一个名词,但在实现中,它通常代表了一系列关于操作的抽象。从模式匹配和ASM等框架的实现中可以看出,访问者被用作一个个小操作的抽象,并通过排列组合形成更复杂的操作。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/672359



问题二:面向对象和函数式编程在访问者模式中的体现有何不同?


面向对象和函数式编程在访问者模式中的体现有何不同?


参考回答:

面向对象的方式认为操作必须和数据绑定到一起,即作为每个类的成员方法存在。而函数式编程则倾向于将数据和操作分离,将基本操作进行排列组合成为更加复杂的操作。在访问者模式中,一个访问者的实现就对应了一个操作,这体现了函数式编程的思想。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/672360



问题三:在需要给每个类增加一个新操作时,成员函数实现方式和访问者实现方式有何区别?


在需要给每个类增加一个新操作时,成员函数实现方式和访问者实现方式有何区别?


参考回答:

成员函数实现方式需要给类层级结构的每个类增加一个实现,这需要修改原来的代码,不符合开闭原则。而访问者实现方式则只需新建一个访问者,完全不影响原来的代码,因此在这种情况下,访问者实现方式更优。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/672361



问题四:在类层级结构中增加一个新类时,成员函数实现方式和访问者实现方式又有何不同?


在类层级结构中增加一个新类时,成员函数实现方式和访问者实现方式又有何不同?


参考回答:

在类层级结构中增加一个新类时,成员函数实现方式只需新建一个类即可,完全不影响原来的代码。而访问者实现方式则需要给每个访问者增加新类的代码实现,这同样需要修改原来的代码,不符合开闭原则。因此,在这种情况下,成员函数实现方式更优。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/672362



问题五:阿里双十一的分会场与功能系统划分中,按应用划分和按功能划分各有什么优缺点?


阿里双十一的分会场与功能系统划分中,按应用划分和按功能划分各有什么优缺点?


参考回答:

按应用划分(如盒马、饿了么、聚划算完全独立)能够短平快地支撑创新业务,但可能导致重复造轮子。这种划分方式类似于面向对象中将操作和数据绑定在一起的方式,每个系统都实现了自己的功能点。而按功能划分(如优惠券系统、订单系统、支付系统)能够最大程度上重用已有技术成果,但中台的限制可能会遏制创新业务的发展。这种划分方式类似于访问者模式,将操作抽象出来,通过不同的访问者实现不同的功能。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/672363



问题六:在软件工程中,如何根据特性和场景决定是采用面向对象的抽象还是访问者的抽象?


在软件工程中,如何根据特性和场景决定是采用面向对象的抽象还是访问者的抽象?


参考回答:

软件工程中没有银弹,需要根据特性和场景来决定是采用面向对象的抽象还是访问者的抽象。通常,部分核心方法可以作为对象的成员方法存在,以利用面向对象的多态和封装特性。而对于应用层那些琐碎杂乱的需求,则可以使用访问者模式来实现,以便在不修改原有类结构的情况下增加新的操作。更多时候,两者需要混用,以达到最佳的软件设计效果。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/672364

相关文章
|
6天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
18017 12
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
18天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
29548 141
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
7天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
4622 20
|
6天前
|
人工智能 API 开发者
阿里云百炼 Coding Plan 售罄、Lite 停售、Pro 抢不到?最新解决方案
阿里云百炼Coding Plan Lite已停售,Pro版每日9:30限量抢购难度大。本文解析原因,并提供两大方案:①掌握技巧抢购Pro版;②直接使用百炼平台按量付费——新用户赠100万Tokens,支持Qwen3.5-Max等满血模型,灵活低成本。
1466 3
阿里云百炼 Coding Plan 售罄、Lite 停售、Pro 抢不到?最新解决方案