,
关于访问者模式的替代方式,我的看法:
先放总结: 行为不可抽象+水平扩展较多-->工厂模式更合适
行为可抽象+垂直扩展较多-->模板方法模式更合适
我认为模板方法模式和工厂模式都可以,具体使用哪种,应该根据扩展的方向来确认:
当前的场景是对不同文件格式的文本进行处理,目前有word,ppt与pdf三种格式,他们的行为都不一致,比如word的抽取,分析与pdf的抽取,分析行为不一致,而且扩展的方向是添加不同的文件格式,比如txt格式,excel等格式,那么最好的方式就是采用工厂模式,每次添加新格式需要添加新的工厂,实现相应的方法
如果扩展的方向是给不同文件格式添加更多的功能,同时这些行为可以抽象出来,比如当前有抽取,分析,压缩等功能,他们有很大一部分可以抽象到父类,那么我要给所有的文件格式添加敏感词替换,格式化文本等功能,就可以将它们添加到父类,而不用每个工厂都加一遍,这种情况模板方法模式更合适