通俗易懂设计模式解析——访问者模式
目录
前言
今天我们看的是访问者模式【Visitor Pattern 】,我们理解访问者模式这个名称可能会有利于我们理解其核心代码块。我们看这么个例子:我去朋友家做客,那么朋友属于主人,我则属于访问者。这时刚好朋友在炒菜,却没得酱油了。如果朋友下去买酱油将会很麻烦而且会影响炒菜。这时就到我这个访问者出马了。一溜烟的出去打着酱油就回来了。简单理解的来说就是,访问者在主人原来的基础上帮助主人去完成主人不方便或者完不成的东西。
访问者模式介绍
一、来由
在软件系统开发中,我们经常会遇见一些层次结构完好的代码因为需求的更改而更改。你说这个时候我更改其基类吧,所有子类都要更改、这是一件很麻烦的事情。那么我能不能在不修改器层次结构完整的前提下完成新的需求的更改呢?
二、意图
表示一个作用于某对象结构中的各个元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。
三、案例图
四、访问者模式代码示例
看上面案例图可以发现访问者模式包含以下部分:
结构对象:节点的容器,包含多个类或者接口
抽象节点:声明一个接收操作,接收访问者对象作为参数,声明处理接口,处理节点数据
具体节点:实现抽象节点的接收操作和处理操作
抽象访问者:声明一个或多个访问操作,使得所有具体访问者都必须实现
具体访问者:实现抽象访问者声明的接口
我们看这么一个需求,我们需要计算图形的面积并输出、图形包括长方形圆形。我们一起看看代码实现吧:
首先我们看不采用访问者模式实现:
namespace Visitor_Pattern { class VisitorPattern { }