具体参考:https://www.jianshu.com/p/1f1049d0a0f4
一 总结
1.1 Visitor接口中的方法个数
Visitor接口中的方法个数等于固定结构(多个对象组成
)中的元素个数,每个元素对应一个重载
的方法。这也是为什么结构中元素的数量最好不要变。因为一变接口也要变,就会多了许多调整
1.2 什么时候适用该模式。
访问者模式是一种将数据操作
和数据结构
分离的设计模式
就是将数据操作放在其他类中,传入元素中。然后元素在accept
方法中回调.
个人理解成这样的场景适用:
- 元素结构(个数)固定
- 不同元素的行为不同(行为一样,就会把行为放在父类中了)
- 不同的调用者(visitor)对同一个元素的操作也不一样(有点桥接模式抽象和实现分离,多维扩展的意思)
1.3 元素的accept中为什么能调用Vistor的visit
因为每个Visitor中都有每个元素的visit重载方法。所以可以直接传入this,this的类型就是当前元素的类型。当然可以编译通过
网友评论