问题一:访问者模式(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
问题六:在软件工程中,如何根据特性和场景决定是采用面向对象的抽象还是访问者的抽象?
在软件工程中,如何根据特性和场景决定是采用面向对象的抽象还是访问者的抽象?
参考回答:
软件工程中没有银弹,需要根据特性和场景来决定是采用面向对象的抽象还是访问者的抽象。通常,部分核心方法可以作为对象的成员方法存在,以利用面向对象的多态和封装特性。而对于应用层那些琐碎杂乱的需求,则可以使用访问者模式来实现,以便在不修改原有类结构的情况下增加新的操作。更多时候,两者需要混用,以达到最佳的软件设计效果。
关于本问题的更多回答可点击原文查看: