跳到主要内容

设计模式

设计模式针对变化。

变化意味着灵活,不稳定。

不变意味着稳定,节省,不灵活。

变化是相对而言的,因而需根据不同的场景确定哪些东西是变化的,哪些是不变的,进而根据变化选择适当的设计模式。

访问者模式

  • 概述

我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜 台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办 理手机银行业务,这些是我们访问者的操作,一直是在变化的。

  • UML

**抽象访问者(Visitor)角色:**声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。

**具体访问者(ConcreteVisitor)角色:**实现抽象访问者角色所声明的接口,也就是抽象访问者所声明的各个访问操作。

**抽象节点(Element)角色:**声明一个接受操作,接受一个访问者对象作为一个参量。

**具体节点(ConcreteElement)角色:**实现了抽象元素所规定的接受操作。

**结构对象(ObiectStructure)角色:**有如下的一些责任,可以遍历结构中的所有元素;如果需要,提供一个高层次的接口让访问者对象可以访问每一个元素;如果需要,可以设计成一个复合对象或者一个聚集,如列(List)或集合(Set)。

1.访问者接口

2.访问者实现类

3.目标对象接口

4.目标对象实现类