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

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

问题一:访问者模式(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

相关文章
|
7月前
|
Java 关系型数据库
JAVA面向对象设计原则
JAVA面向对象设计原则
81 1
|
7月前
|
设计模式
二十三种设计模式全面解析-组合模式与迭代器模式的结合应用:构建灵活可扩展的对象结构
二十三种设计模式全面解析-组合模式与迭代器模式的结合应用:构建灵活可扩展的对象结构
126 0
|
7月前
|
设计模式 存储 缓存
第三篇 结构型设计模式 - 简化复杂系统的结构
第三篇 结构型设计模式 - 简化复杂系统的结构
|
7月前
|
Serverless PHP
当谈论面向对象编程时,这四个概念是非常重要的。以下是对接口、继承、封装和多态的简要说明
本文介绍了面向对象编程的四个核心概念:接口、继承、封装和多态。接口定义对象的行为规范,类通过实现接口确保符合所需行为。继承允许在已有类基础上创建新类,实现代码重用。封装是将数据和操作捆绑并隐藏内部细节,提高安全性和可维护性。多态使对象在运行时能表现出不同行为,增加代码灵活性和可扩展性。文中还提供了代码示例来说明这些概念。
57 0
|
7月前
|
设计模式 缓存 安全
探索设计模式的魅力:从单一继承到组合模式-软件设计的演变与未来
组合模式:构建灵活树形结构的艺术。 组合模式旨在解决如何将对象组合成树形结构,隐藏具体实现,使客户端对单个对象和复合对象的使用具有一致性。通过将对象组合成树形结构,组合模式提供了层次化的结构,使系统更灵活、可扩展。 核心思想在于统一叶节点和组合节点。叶节点代表具体的对象,而组合节点则是其他对象的容器。该设计允许我们以统一的方式处理叶子和组合,简化了许多操作。实践中,组合模式适用于具有树形结构并且希望保持结构灵活的系统。它不仅提高了代码的可重用性和可维护性,还使得添加新功能变得简单,无需修改现有代码。...
100 0
|
7月前
针对抽象编程与对应的好处
针对抽象编程与对应的好处
54 1
面向对象基础-抽象
面向对象基础-抽象
71 0
|
设计模式 存储 安全
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
96 0
|
设计模式 算法 Java
六大原则之外的设计原则|设计原则
在前面的几篇设计原则文章中,我们分别讲述了经典的六大设计原则。但是事实上,我们在开发中还有几个重要的设计原则,在这篇文章中,一并给大家讲述。
|
设计模式 Java
如何理解代码中的抽象|设计模式基础
下面,我们可以通过问题的形式来加深我们对抽象这一概念的理解。