设计模式[11]-Visitor

简介:

Type: Behavioral

Visitor: Visitor提供要对对象结构中元素执行的操作。让你可以在不修改其操作的元素的情况下定义新操作。在元素类型很少改变的情况下适用。


#include <iostream>
using namespace std;

class ConcreteElementA;
class ConcreteElementB;
class Visitor
{
public:
    virtual void visitElementA(ConcreteElementA* a) = 0;
    virtual void visitElementB(ConcreteElementB* b) = 0;
};

class Element
{
public:
    virtual void accept(Visitor* v)=0;
};

class ConcreteVisitor: public Visitor
{
public:
    void visitElementA(ConcreteElementA* a)
    {
        cout<<"visitElementA"<<endl;
    };
    void visitElementB(ConcreteElementB* b)
    {
        cout<<"visitElementB"<<endl;
    };
};

class ConcreteElementA: public Element
{
public:
    void accept(Visitor* v)
    {
        v->visitElementA(this); 
    };
};

class ConcreteElementB: public Element
{
public:
    void accept(Visitor* v)
    {
        v->visitElementB(this); 
    };
};

int main()
{
    Visitor *pVisitor = new ConcreteVisitor;
    Element *pElement  = new ConcreteElementA;

    pElement->accept(pVisitor);

    pElement = new ConcreteElementB;
    pElement->accept(pVisitor);

    system("pause");
    return 0;
}

目录
相关文章
|
6月前
|
设计模式 算法
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
73 1
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
|
11月前
|
设计模式 关系型数据库 BI
认真学习设计模式之访问者模式(Visitor Pattern)
认真学习设计模式之访问者模式(Visitor Pattern)
68 0
|
设计模式 缓存 Kubernetes
【K8s源码品读】003:Phase 1 - kubectl - 设计模式中Visitor的实现
理解kubectl的核心实现之一:Visitor Design Pattern 访问者模式
70 0
|
设计模式 BI
设计模式18 - 访问者模式【Visitor Pattern】
设计模式18 - 访问者模式【Visitor Pattern】
38 0
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——访问者模式Visitor(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——访问者模式Visitor(原理讲解+应用场景介绍+案例介绍+Java代码实现)
60 0
|
设计模式 算法 BI
设计模式~访问者模式(Visitor)-15
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对
45 0
|
设计模式 XML 存储
Java中23种面试常考的设计模式之访问者模式(Visitor)---行为型模式
Java中23种面试常考的设计模式之访问者模式(Visitor)---行为型模式
94 1
|
设计模式 算法 Java
Java设计模式-访问者模式(Visitor)
Java设计模式-访问者模式(Visitor)
|
设计模式 算法 容器
从零开始学设计模式(十三):访问者模式(Visitor Pattern)
前面的几篇文章分别介绍了创建型设计模式和结构型设计模式,接下来的几篇文章将介绍行为型设计模式
171 0
从零开始学设计模式(十三):访问者模式(Visitor Pattern)
|
设计模式 安全 Java
设计模式|从Visitor Pattern说到Pattern Matching
在软件开发领域,我们每次遇到的问题可能都各不相同,有些是跟电商业务相关的,有些是跟底层数据结构相关的,而有些则可能重点在性能优化上。然而不管怎么样,我们在代码层面上解决问题的方法都有一定的共性。有没有人总结过这些共性呢?
设计模式|从Visitor Pattern说到Pattern Matching