本系列主要记录设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它;它是怎样解决的,掌握它的结构图,记住它的关键代码;可以想到至少两个它的应用实例,一个生活中的,一个软件中的;这个模式的优缺点是什么,其有哪些使用场景,在使用时要注意什么。
尊重作者,转载请注明晔阳的Bloghttp://blog.csdn.net/hacke2
21.訪问者模式
意图:主要讲数据结构与数据操作分离
主要解决:稳定的数据结构和易变的操作耦合问题
什么时候使用:与类本不相关的,为了避免这个污染 ,使用訪问者模式将这些封装到訪问者模式
怎样解决 :在被訪问的类里面加一个对外提供接待訪问者的接口
结构图:
关键代码:在数据基础类里面有一个方法接受訪问者,将自身引用传入訪问者
应用实例:你在朋友家做客,你是訪问者,朋友接受你的訪问,你通过朋友的描写叙述,然后对朋友的
描写叙述做出一个推断,这就是訪问者模式
长处:1、符合单一职责原则。 2、优秀的扩展性。3、灵活性
缺点:1、详细元素对訪问者发布细节,违反了迪米特原则2、详细元素变更比較困难
3、违反了依赖倒置原则,依赖了详细类,没有依赖抽象
使用场景:1、对象结构中对象相应的类非常少改变,但常常须要在此对象结构上定义新的操作。
2、须要对一个对象结构中的对象进行非常多不同的而且不相关的操作,而须要避免让这些操作“污染”这些对象的类,也不希望在添加新操作时改动这些类
注意事项:訪问者能够对功能进行统一,能够做报表、UI、拦截器与过滤器