本文主要是介绍设计模式之访问者模式-访问一下呗!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
访问者模式
- 一、访问者模式的概念
- 二、访问者模式使用场景
- 三、访问者模式构建方法
- 1、抽象访问者类(Visitor)
- 2、具体访问者类(ConcreteVisitor)
- 3、抽象节点类(Element)
- 4、具体节点类(ConcreteElement)
- 5、结构对象类(ObiectStructure)
- 四、访问者模式的示例
- 五、访问者模式的优缺点
- 优点:
- 缺点:
一、访问者模式的概念
访问者模式属于行为模式,它分离对象的数据和行为,使用访问者模式,可以在不修改已有类的情况下,增加新的操作角色和职责。
二、访问者模式使用场景
1、当对象结构中的对象对应的类很少改变,但经常需要在此对象结构上定义新的行为和操作方法。
2、当需要对对象结构新增加的行为和操作,避免新的操作和行为改变原来的对象类,可以使用该模式实现解耦合。
三、访问者模式构建方法
1、抽象访问者类(Visitor)
访问者的对象抽象类,定义具体访问者的共同接口和方法。
2、具体访问者类(ConcreteVisitor)
具体访问者类实现抽象访问者类所声明的接口和方法。
3、抽象节点类(Element)
抽象节点类声明一个接受接口和方法,接受一个访问者对象作为一个参量。
4、具体节点类(ConcreteElement)
具体节点类实现了抽象节点类所定义的的接受接口和方法。
5、结构对象类(ObiectStructure)
结构对象类可以遍历结构中的所有元素,可以提供一个高层次的接口,让访问者对象可以访问每一个元素。
四、访问者模式的示例
// VisitorPattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <string>
#include <list>#define DELETE_PTR(p) {if(p!=nullptr){delete (p); (p)=nullptr;}}
using namespace std;// 前置声明
class StaffElement;// 访问者抽象类-客户
class CustomerVisit
{
public:virtual void customVisit(StaffElement *pStaffElement) = 0;
};// 抽象节点类-营业厅员工
class StaffElement
{
public:virtual void accepCustomer(CustomerVisit
这篇关于设计模式之访问者模式-访问一下呗!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!