定义:将数据结构和数据操作分离的设计模式,是GOF23种设计模式中最复杂的一个,使用频率不高
使用场景:1对象数据结构比较稳定,但经常需要在对象结构上定义新的操作
2需要对一个对象结构中的对象进行很多不同的且不想关的操作,需要避免这些操作污染这些类,也不希望在增加新操作时修改这些类。
参考下此博文的访问者模式 http://blog.youkuaiyun.com/chenssy/article/details/12029633
UML图 :
TODO 以例子来说明好处
总结: 在使用一个模式时,要明确它的使用场景,它解决的问题等,以此来避免滥用设计模式的现象。
访问者模式的优点:
1各角色职责分离,符合单一职责原则。
2具有优秀的扩展性
3使得数据结构和作用于数据结构的操作解耦,使得数据集合可以独立变化。
4灵活性
缺点
1具体元素对访问者公布细节,违反了迪米特原则。
2具体元素变更时导致修改成本太大。
3违反了依赖倒置原则,为了达到区别对待而依赖了具体类,没有依赖抽象。