问题 单项选择题

某软件公司承接了为某工作流语言开发解释器的工作。该工作流语言由多种活动节点构成,具有类XML的语法结构。用户要求解释器工作时,对每个活动节点进行一系列的处理,包括执行活动、日志记录、调用外部应用程序等,并且要求处理过程具有可扩展能力。针对这种需求,公司采用______最为恰当。

A.适配器模式
B.迭代器模式
C.访问者模式
D.观察者模式

答案

参考答案:C

解析: 首先,简单介绍题目中涉及的4种设计模式。
①适配器(adapter)模式。适配器模式将一个接口转换成客户希望的另一个接口,从而使接口不兼容的那些类可以一起工作。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在类适配器模式中,通过使用一个具体类将适配者适配到目标接口中;在对象适配器模式中,一个适配器可以将多个不同的适配者适配到同一个目标。
②迭代器(iterator)模式。迭代器模式是一种对象的行为型模式,提供了一种方法来访问聚合对象,而不用暴露这个对象的内部表示。迭代器模式支持以不同的方式遍历一个聚合对象,复杂的聚合可用多种方法来进行遍历;允许在同一个聚合上可以有多个遍历,每个迭代器保持它自己的遍历状态,因此,可以同时进行多个遍历操作。
③访问者(visitor)模式。访问者模式是一种对象的行为型模式,用于表示一个作用于某对象结构中的各元素的操作,它使得用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式使得增加新的操作变得很容易,但在一定程度上破坏了封装性。
④观察者(observer)模式。观察者模式又称为发布-订阅模式、模型-视图模式、源-监听器模式或从属者(dependents)模式,是一种对象的行为型模式。它定义了对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。观察者模式的优点在于实现了表示层和数据层的分离,并定义了稳定的更新消息传递机制,类别清晰,抽象了更新接口,使得相同的数据层可以有各种不同的表示层。
根据题目的描述,可以看出本题的核心在于对某个具有固定结构的活动节点需要多种处理能力,且处理能力可扩展,也就是说要求在不改变原来类结构(活动节点)的基础上增加新功能。对照4个选项,发现访问者模式最符合要求。

多项选择题
名词解释