之前学习设计模式真的是一遍而过,没有什么理解,现在回头看之前的学习也是比较零散的,没有一个自己的认识,现在再次去学习,就是不一样,之前一点的概念都没有,这次算是重新开始再学一遍。
首先自己看访问者解释就是做了一个分解完善的过程,把里面的话都理解以后在结合它类图看就有不一样的认识了,
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
在这里访问者说:“表示一个作用于某对象结构中的各元素的操作”,这句话要对应图中,就是这个具体操作类,而后面说的“可以不改变各元素的类的前提下定义作用于这些元素的新操作”,这句就是体现在操作是可扩展,你可以在添加一个新的操作类,但是这些添加都是基于你的数据结构类时不会发生变化的,在添加操作这里它是符合开闭原则的,但是在数据结构这里就不行了,因为当你添加了新的数据结构,你的操作类这里要不要进行重新添加新的操作呢,之前的操作在这新添加的数据结构上适不适用呢?这些都是问题,所以这使用访问者的时候就要考虑清楚这些问题,它适用于一些数据结构不会发生改变的,但是操作有多种的情况下,这里的数据结构可以使人,这里的操作就是人的行为,这是比较抽象,这个数据结构还可以更加具体一些,但是要基于你不会发生变化。
而下面的这个图中的对象结构,它的作用就是为让你的操作去对应你的具体的数据结构,而且它也说了,这个对象结构能枚举出它的元素,这里的“它”指的是在这个数据结构中存储的具体的数据结构对象。
具体例子可以在大话设计模式找到